PDB Isolation und Security - Wie sieht es mit der Sicherheit der Multitenant Datenbanken (CDB) aus? Stefan Oehrli - DOAG
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
PDB Isolation und Security Wie sieht es mit der Sicherheit der Multitenant Datenbanken (CDB) aus? Stefan Oehrli @stefanoehrli www.oradba.ch BASEL | BERN | BRUGG | BUCHAREST | COPENHAGEN | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I. BR. GENEVA | HAMBURG | LAUSANNE | MANNHEIM | MUNICH | STUTTGART | VIENNA | ZURICH
Stefan Oehrli Plattform Architekt, Trainer und Partner bei Trivadis • Seit 1997 in verschiedenen IT-Bereichen tätig • Seit 2008 bei der Trivadis AG • Mehr als 20 Jahre Erfahrung im Umgang mit Oracle Datenbanken Fokus: Daten schützen und Datenbanken sicher betreiben • Security Assessments und Reviews • Datenbank Sicherheitskonzepte und deren Umsetzung • Oracle Backup & Recovery Konzepte und Troubleshooting • Oracle Enterprise User Security, Advanced Security, Database Vault, … • Oracle Directory Services Co-Autor des Buches Der Oracle DBA (Hanser, 2016/07) @stefanoehrli www.oradba.ch BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH
Agenda • Allgemeines zur Datenbanksicherheit • Herausforderungen bei Multitenant Datenbanken • Isolations- und Sicherheitsmaßnahmen • Ausblick und mögliche Verbesserungen • Zusammenfassung 5 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Agenda • Allgemeines zur Datenbanksicherheit • Herausforderungen bei Multitenant Datenbanken • Isolations- und Sicherheitsmaßnahmen • Ausblick und mögliche Verbesserungen • Zusammenfassung 6 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Top 10 Datenbankrisiken und -bedrohungen • Übermässige Nutzung von Privilegien • Missbrauch von Privilegien • Unbefugte Ausweitung von Berechtigungen • Plattformschwachstellen • SQL-Injektion • Schwaches Audit • Denial-of-Service • Schwachstellen im Datenbankprotokoll • Schwache Authentifizierung • Exposition von Backup-Daten 7 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Maximal Data Security Architecture - CDB 9 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Agenda • Allgemeines zur Datenbanksicherheit • Herausforderungen bei Multitenant Datenbanken • Isolations- und Sicherheitsmaßnahmen • Ausblick und mögliche Verbesserungen • Zusammenfassung 10 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Multitenant Container Datenbank Nutzung Wie werden die Multitenant Container Datenbanken genutzt? • Einfaches Ersetzen der klassischen Datenbankarchitektur (None-CDB) durch nur eine PDB • Datenbankkonsolidierung unter Verwendung mehrerer PDBs • Private DBAAS • Öffentliche DBAAS Infrastruktur-Architektur • Cloud, Hybrid oder On-Premise? • Dedizierte Hardware • Virtuelle Umgebungen • Engineered System 11 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Multitenant Container Datenbank Nutzung Spezifische Fragen zur Sicherheit • Umfassende Berechtigungen in den PDBs verfügbar? • Strenge Sicherheitsanforderungen und –standards? • Branchenabhängige Rechts- und Compliance- Anforderungen? Unternehmensstruktur • Alles nur ein Unternemen / juristische Person? • Mehr oder weniger unabhängige Abteilungen? • Mehrere Unternehmen und Tochtergesellschaften? • Dienstleister für verschiedene Unternehmen Die Anforderungen an die Isolierung variieren 12 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Aber warum überhaupt Isolierung? • Nur grundlegende Datenbanksicherheit ist nicht ausreichend. • PDB-Admin und Benutzer verfügen über umfassende Berechtigungen (DBAAS). • Volle DBA Rolle • ALTER SYSTEM, ALTER SESSION,… • PL/SQL Packages und Prozeduren • Oracle Bugs und Feature erlauben, die Grenzen einer PDB zu verlassen. • Scheduler Jobs erlauben OS Calls • External Table pre-Processor Scripts • PL/SQL Library Calls • Java OS Calls • Ressource Management ist ein weiterer Aspekt der PDBs 13 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Risikon in einer DBAAS Umgebung • PDB Admin Nutzt Privilege Eskalation. • Excessive Nutzung von Shared Ressourcen. • Zugriff auf sensible Daten über gemeinsame Ressourcen, z.B. Backup LAN. • Ausbruch aus der PDB Zugriff auf das OS als oracle. • Zugang zum root Container (cdb$root) • Zugang zu andern PDBs erhalten. • Zugang zum Netzwerk erhalten. • Nutzung von kritischen Feature wie • Oracle JVM • DBMS_SCHEDULER • External table pre-processor 14 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Das Risiko ist geklärt? 15 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Agenda • Allgemeines zur Datenbanksicherheit • Herausforderungen bei Multitenant Datenbanken • Isolations- und Sicherheitsmaßnahmen • Ausblick und mögliche Verbesserungen • Zusammenfassung 16 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Kochen wir oder warum Zwiebeln? • Maßnahmen auf mehreren Ebenen sind unerlässlich. • Schichtaufbau ähnlich einer Zwiebel. Z.B. • Sichere und korrekte Daten • Sicheres Anwendungsdesign • PDB-Härtung • PDB Isolation und Sicherheit • Allgemeine CDB-Architektur • CDB-Härtung • OS Härtung • Netzwerksicherheit Die folgenden Funktionen wie Lockdown-Profile, Pfadpräfix und PDB OS-Anmeldeinformationen sind nur Teil eines ganzheitlichen Ansatzes. 17 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Möglichkeiten zur Risikominderung Eine Multitenant Container Datenbank bietet über die üblichen Sicherheitsmaßnahmen hinaus folgende Funktionen: • PATH_PREFIX und CREATE_FILE_DEST Klausel, um Datendateien und Verzeichnisobjekte auf bestimmte Pfade zu beschränken. • PDB_OS_CREDENTIAL Parameter zur Zuweisung eines dedizierten Benutzerkontos für OS-Interaktionen • Lockdown profiles zur Einschränkung bestimmter Operationen oder Funktionalitäten in einem PDBs Aber was kann man mit ihnen machen...? 18 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Verwalten des OS-Zugriffs • Definieren eines dediziertes OS-Benutzerkonto für Systeminteraktionen. • Basierend auf dem Package DBMS_CREDENTIAL package und Parameter PDB_OS_CREDENTIAL. • Ermöglicht die Definition von dedizierten OS-Anmeldeinformationen für folgenden Bereiche : • Externe Jobs, die noch keine OS-Anmeldung nutzen. • External Table pre-Processors • PL/SQL Library Executions (EXTPROC) • Kann global oder pro PDB definiert werden.. • Eingeführt mit Oracle 12.2.0.0.1. Was die Theorie betrifft.... • ... leider gibt es noch bugs (12g-19c) • … PDB_OS_CREDENTIAL funktioniert nicht wie erwartet für pre-Processor. 19 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Anmeldedaten definieren • Erstellen von Anmeldedaten in der cdb$root für einen entsprechenden OS-Benutzer. BEGIN dbms_credential.create_credential( credential_name => 'PDBSEC_OS_USER', username => 'orapdbsec', password => 'manager'); END; / • Setzen der Parameter auf CDB-Ebene (ältere Version erforderte eine Änderung über pfile). ALTER SYSTEM SET pdb_os_credential=GENERIC_PDB_OS_USER SCOPE=SPFILE; • Oder individuell per PDB ALTER SESSION SET CONTAINER=pdbsec; ALTER SYSTEM SET pdb_os_credential=PDBSEC_OS_USER SCOPE=SPFILE; 20 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Verwalten des Dateizugriffs PATH_PREFIX Klausel zur Einschränkung von Directory Pfaden • Wird zum Zeitpunkt der Erstellung pro PDB festgelegt. Kann später nicht mehr geändert werden. • Einschränkungen und Einschränkungen bei der Verwendung von PATH_PREFIX: • Bestehende Directories funktionieren möglicherweise nicht wie erwartet. • Der PATH_PREFIX wird immer als Präfix für alle lokalen Directories in der PDB verwendet. • Gilt nicht für Oracle interne Directories (mmh, was sind Oracle interne Directories J ) • Beeinflusst nicht Dateien, welche durch OMF erstellt wurden. • Gilt nicht für Data oder Temp Files. CREATE_FILE_DEST verwenden • CREATE_FILE_DEST Klausel zur Einschränkung des Verzeichnispfades für Data oder Temp Files. • Implizites setzten von DB_CREATE_FILE_DEST. => Kann angepasst werden • Aktiviert Oracle Managed Files für das PDB. • Angabe eines Standart Verzeichnis oder Oracle ASM Disk Gruppe für die PDB. 21 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Dateizugriff konfigurieren • Manuelles erstellen einer PDB basierend auf der PDB$SEED CREATE PLUGGABLE DATABASE pdbsec ADMIN USER pdbadmin IDENTIFIED BY LAB01schulung ROLES=(dba) PATH_PREFIX = '/u01/oradata/pdbsec/directories/' CREATE_FILE_DEST = '/u01/oradata/pdbsec/'; • Alternativ erstellen einer PDB basierend auf einem Template, dbca etc. • Prüfen der aktuellen Einstellung von PATH_PREFIX in database_properties ALTER SESSION SET CONTAINER=pdbsec; SELECT * FROM database_properties WHERE property_name='PATH_PREFIX'; PROPERTY_NAME PROPERTY_VALUE DESCRIPTION ------------- ------------------------------- ---------------------- PATH_PREFIX /u01/oradata/PDBSEC/directories All paths for objects such as directories are relative to this 22 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Überprüfung – PATH_PREFIX • Erstellen eines Oracle Directory Objekt ausserhalb des PATH_PREFIX SQL> CREATE DIRECTORY wrong_prefix AS '/tmp/test'; CREATE DIRECTORY wrong_prefix AS '/tmp/test' * ERROR at line 1: ORA-65254: invalid path specified for the directory • Erstellen eines Oracle Directory Objekt innerhalb des PATH_PREFIX SQL> CREATE DIRECTORY no_prefix AS 'no_prefix'; Directory created. SQL> SELECT directory_name, directory_path FROM dba_directories 2 WHERE origin_con_id=(SELECT con_id FROM v$pdbs); DIRECTORY_NAME DIRECTORY_PATH --------------- ------------------------------------------ NO_PREFIX /u01/oradata/PDBSEC/directories/no_prefix 23 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Überprüfung – CREATE_FILE_DEST • Erstellen eines Tablespace mit absoluten Pfad ausserhalb CREATE_FILE_DEST SQL> CREATE TABLESPACE wrong_prefix DATAFILE '/tmp/wrong_prefix.dbf' SIZE 1M; CREATE TABLESPACE wrong_prefix DATAFILE '/tmp/wrong_prefix.dbf' SIZE 1M * ERROR at line 1: ORA-65250: invalid path specified for file - /tmp/wrong_prefix.dbf • Erstellen eines Tablespace mit absoluten Pfad innerhalb CREATE_FILE_DEST und mit OMF SQL> CREATE TABLESPACE right_prefix DATAFILE 2 '/u01/oradata/PDBSEC/right_prefix.dbf' SIZE 1M; Tablespace created. SQL> CREATE TABLESPACE no_prefix datafile SIZE 1M; Tablespace created. 24 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Lockdown Profiles • Oracle hat mit 12.1 Lockdown-Profile eingeführt. Sie werden jedoch erst in 12.2 oder besser 18c/19c interessant. • Lockdown-Profile ermöglichen, den Benutzer in PDBs in einer Container-Datenbank einzuschränken. • Es ist möglich, Sperrprofile zuzuordnen zu... • ... pro PDBs • ... allen PDBs in einer CDB • … Application Container • CREATE LOCKDOWN PROFILE Statement in der CDB oder dem Application Root • Die Verwendung von Lockdown-Profilen umfasst 3 Schritte: • Erstellen von Lockdown Profile mit CREATE LOCKDOWN PROFILE • Ein- / Auschalten Benutzeroperationen mit ALTER LOCKDOWN PROFILE • Einschalter des entsprechenden Lockdown Profile mit ALTER SYSTEM SET pdb_lockdown= 25 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Möglichkeiten von Lockdown-Profilen • ALTER LOCKDOWN PROFILE Anweisung erlaubt es, Funktionen zu aktivieren/deaktivieren : • LOCKDOWN_OPTIONS Klause: Einschränkung von Datenbank Optionen. • LOCKDOWN_FEATURES Klause : Einschränkung von Datenbank Features. • LOCKDOWN_STATEMENTS Klause : Einschränkung von SQL Statements. • Die Funktion kann entweder explizit deaktiviert oder aktiviert werden. • Kombination von ALL und EXCEPT ist möglich.. • Oracle 18c hat eine Reihe von Verbesserungen für Lockdown Profiles eingeführt : • Einschränken limitieren auf ALL, LOCAL or COMMON Benutzer. • Erstellen von Lockdown Profiles basierend auf existierenden Profilen als kopie oder dynamisch. 26 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
LOCKDOWN_OPTIONS Klausel • Die folgenden Datenbankoptionen können eingeschränkt werden : • DATABASE QUEUING – Benutzeroperationen, die mit der Option Oracle Database Advanced Queuing verbunden sind. • PARTITIONING – Benutzeroperationen im Zusammenhang mit der Option Oracle Partitionierung • Einschränkung explizit oder mit Ausschluss : • Verwenden von ALL, um alle Optionen zu erlauben • Verwenden von ALL EXCEPT um alle spezifische Optionen auszuschliessen • Standard ist ENABLE OPTION ALL. • Aktivieren aller Optionen außer DATABASE QUEUING ALTER LOCKDOWN PROFILE sec_default ENABLE OPTION ALL EXCEPT = ('DATABASE QUEUING'); 27 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
LOCKDOWN_FEATURES Klausel • LOCKDOWN_FEATURES Klausel zum Aktivieren/Deaktivieren von Operationen, die mit bestimmten Datenbankfunktionen verbunden sind. • Unterstützt eine umfassende Liste von Datenbankfunktionen und Feature-Bundle. Z.B. AWR_ACCESS, CONNECTIONS, JAVA, JAVA_RUNTIME, NETWORK_ACCESS, OS_ACCESS, etc. • Siehe Oracle-Dokumentation ALTER LOCKDOWN PROFILE für eine vollständige Liste. • Einschränkung explizit oder mit Ausschluss: • Verwenden von ALL um alle Features auszuwählen • Verwenden von ALL EXCEPT um alle spezifische Features auszuschliessen. • Standard ist ENABLE ALL. • OS_ACCESS deaktivieren, aber TRACE_VIEW_ACCESS explizit aktivieren. ALTER LOCKDOWN PROFILE sec_default DISABLE FEATURE = ('OS_ACCESS'); ALTER LOCKDOWN PROFILE sec_default ENABLE FEATURE = ('TRACE_VIEW_ACCESS'); 28 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
LOCKDOWN_STATEMENTS Klause • LOCKDOWN_ STATEMENTS Klausel zum Aktivieren/Deaktivieren von bestimmten SQL Statements. • DISABLE, um die Ausführung bestimmter SQL-Anweisungen zu verbieten. • ENABLE, um die Ausführung bestimmter SQL-Anweisungen zu ermöglichen.. • Einschränkung explizit oder mit Ausschluss: • ALL um alle Statements zu erlauben. • ALL EXCEPT um alle spezifische Statements auszuschliessen. • Default is ENABLE STATEMENT ALL. • STATEMENT_CLAUSES ermöglicht das Deaktivieren/Aktivieren spezifischer SQL Klauseln. • OPTION_CLAUSES ermöglicht das Deaktivieren/Aktivieren von bestimmter Optionen. • Z.B. Disable all ALTER SYSTEM aber erlaube ALTER SYSTEM SET cursor_sharing • Die Herausforderung, alle kritischen Aussagen, Klauseln und Optionen abzudecken und keine Sicherheitslücke zu öffnen. 29 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Noch ein paar Beispiele • Disable ALTER SYSTEM erlauben für COMMON User und Klause KILL SESSION. ALTER LOCKDOWN PROFILE sec_default DISABLE STATEMENT = ('ALTER SYSTEM'); ALTER LOCKDOWN PROFILE sec_default ENABLE STATEMENT = ('ALTER SYSTEM') CLAUSE = ('SET') USERS=COMMON; ALTER LOCKDOWN PROFILE sec_default ENABLE STATEMENT = ('ALTER SYSTEM') CLAUSE = ('KILL SESSION'); • Neues Lockdown Profile sec_jvm basierend auf sec_default • Enable Java und Java Runtime CREATE LOCKDOWN PROFILE sec_jvm FROM sec_default; ALTER LOCKDOWN PROFILE sec_jvm ENABLE FEATURE = ('JAVA_RUNTIME'); ALTER LOCKDOWN PROFILE sec_jvm ENABLE FEATURE = ('JAVA'); 30 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Was Fehlt noch? • Die PDB-Isolation ist kein Ersatz für ein umfassendes Sicherheitskonzept. • Das Ressourcenmanagement ist überhaupt nicht abgedeckt. • TDE, insbesondere die TDE-Schlüsselverwaltung, erfordert zusätzliche Maßnahmen. • Betriebssystemspezifische Admin-Aktivitäten werden nicht getrennt, z.B. Backup & Recovery. • Obwohl die Benutzer durch PDB_OS_CREDENTIAL unterschieden werden, sind Maßnahmen auf dem Betriebssystem dennoch obligatorisch => Layered Security • Fehler in der PDB-Isolation, wenn schlechte Lockdown- Profile definiert wurden. 31 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Agenda • Allgemeines zur Datenbanksicherheit • Herausforderungen bei Multitenant Datenbanken • Isolations- und Sicherheitsmaßnahmen • Ausblick und mögliche Verbesserungen • Zusammenfassung 32 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Ausblick und mögliche Verbesserungen • Kurzfristig, warten auf die Bugfix rund um PDB_OS_CREDENTIAL. • Bug 25820082 - PDB_OS_CREDENTIAL PARAMETER NOT WORKING => fixed for 12.2.0.1 RU April 2019 since 10. Sept. 2019 • Bug 29926986 - LISTENER SPAWNED EXTPROC FAILS WITH ORA-28575 • Bug 29922316 - EXTPROC FAILS WITH HS: CHILD EXTPROC FINISHED CALLING JSSU! STATUS = -1 WHEN DBMS_CREDENTIAL CONFIGURED • Doc 29938722 - PDB_OS_CREDENTIAL DOCUMENTION NEEDS TO INCLUDE CONFIGURATION REQUIREMENTS AND EXAMPLES • Java ist leider eine Herausforderung für sich und nicht durch die Bugs abgeckt • Oracle hat mit ähnlichen Herausforderungen für seine Cloud-Services zu kämpfen, z.B. Oracle Autonomous Database. • Gespräche mit dem Oracle PM für PDBs haben gezeigt, dass Lösungen nötigsind und entwickelt werden, z.B. Linux CGROUPS, Linux Security Module (LSM) etc. 33 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Oracle DB Nest • Ein möglicher Hinweis in Oracle 19c basierend auf einigen versteckten Parametern. Parameter Instance Description ----------------------- ----------- -------------------------------- _dbnest_enable NONE dbNest enable _dbnest_pdb_fs_conf PDB Filesystem configuration _dbnest_pdb_fs_type DEFAULT PDB FS Type _dbnest_pdb_scm_conf PDB SCM configuration _dbnest_pdb_scm_level STRICT1 PDB SCM Level _dbnest_stage_dir Staging directory configuration _instance_dbnest_name Instance dbNest Name • Zeigt eine Funktionalität namens DB Nest an. • In Präsentationen von OOW 2018 wurde DB Nest als Sicherheitsverbesserung für Container Datenbanken erwähnt. 34 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Oracle DB Nest Die genaue Funktionalität kann im Moment nur erraten werden. • Kontrolle und Isolierung von..... • Betriebssystem-Ressourcen, die von einem PDB verwendet werden • Dateisystemisolierung nach PDB • Sichere Datenverarbeitung • …? Oracle Database 20c kommt bald J 35 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Agenda • Allgemeines zur Datenbanksicherheit • Herausforderungen bei Multitenant Datenbanken • Isolations- und Sicherheitsmaßnahmen • Ausblick und mögliche Verbesserungen • Zusammenfassung 36 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Zusammenfassung • Nicht nur für Kunden eine Herausforderung. Oracle muss ähnliche Probleme für seine Cloud- Produkte lösen. • Lockdown Profiles, PATH_PREFIX, PDB_OS_CREDENTIAL etc. bieten grundlegende Funktionen zur Implementierung der PDB-Isolation. Aber..... • .... es gibt noch ein paar Fehler. • .... nicht alle Anwendungsfälle werden abgedeckt, z.B. Ressourcenmanagement, Java etc. • Was früher wahr war, ist immer noch wahr. • Kein Oracle JVM in sicherheitskritischen Datenbanken! • Prüfen ob es unbedingt notwendig ist. • Die Eröffnung eines SR zu diesem Thema ist einfach umständlich und mühsam. • Die neue Funktionalität DB Nest sieht vielversprechend aus. Trotz der Einschränkungen bieten diese Funktionen grundlegende Funktionalitäten, um den PDB sicherer zu machen und mit der Implementierung der Isolation zu beginnen. 37 15.10.2019 DOAG SIG Security 2019 - PDB Isolation und Security
Sie können auch lesen