Keystores werden zur sicheren Speicherung von Krypto-Schlüsseln jeglicher Art verwendet. Auch die Oracle Datenbank verwendet einen Keystore zur Speicherung des externen Schlüssels, sobald Transparent Data Encryption (TDE) zum Verschlüsseln der Oracle Datenbank verwendet wird. Neben der Speicherung des TDE Master Keys, werden weitere Keystores von der Oracle Datenbank verwendet - zum Beispiel zur Speicherung von Passwörtern, Zertifikaten und anderen „Geheimnissen“. Als Standard-Keystore wird das Oracle Wallet verwendet. Bisher war es so, dass jede verschlüsselte Datenbank einen dedizierten Keystore verwenden musste. Das galt auch für eine Multitenant-Umgebung, in der jede Pluggable Database (PDB) den gemeinsamen Keystore der Container Database (CDB) benutzte. Das widersprach der strikten Trennung zwischen den PDBs untereinander aber auch zwischen der CDB und den PDBs. Es war also nicht möglich, dass ein PDB Administrator beziehungsweise der Mandant über seinen eigenen Keystore verfügte. Dabei ist der Zugriff auf Krypto-Schlüssel die "Achillessehne der Datensicherheit".
Derjenige der Zugriff auf die Schlüssel hat, hat auch Zugriff auf die Daten. Mit der Oracle Datenbank 18c wird diese Problematik nun gelöst: Jede PDB kann ihren eigenen Keystore besitzen. Das Feature - Keystore for Each Pluggable Database- ermöglicht es in einer Multitenant-Umgebung, dass jede PDB einen eigenen Keystore verwenden kann. Wird diese Eigenschaft genutzt, erhalten die Administratoren der PDB die volle alleinige Kontrolle über ihren Keystore. Hieraus folgt aber auch Verantwortung: Sollte der PDB Administrator zum Beispiel das Passwort seines Keystores vergessen, gibt es niemanden mehr, der ihm helfen kann.
Um das Feature zu verwenden, wurden zwei neue Parameter und Keystore-Eigenschaften eingeführt, die in den folgenden Abschnitten erklärt werden.
Datenbank Initialisierungsparameter WALLET_ROOT
Mit der 18c wurde der Datenbank-Initialisierungsparameter WALLET_ROOT eingeführt. Dieser Parameter ersetzt den SQLNET.ORA Parameter SQLNET.ENCRYPTION_WALLET_LOCATION, der ab 18c abgekündigt wurde, aber natürlich weiterhin noch eine gewisse Zeit lang funktioniert. Ist der Parameter nicht gesetzt, bezieht die Datenbank das Wallet-Verzeichnis weiterhin über den SQLNET.ENCRYPTION_WALLET_LOCATION Parameter aus der SQLNET.ORA. WALLET_ROOT wird in der CDB gesetzt. Der Parameter beschreibt das Keystore-Basis-Verzeichnis aller der CDB zugeordneten PDBs. Darauf aufbauend, dient die eindeutige -PDB-GUID- als weiteres Verzeichnis zur Trennung der Keystores.
Struktur: /wallet-root/pdb-guid/tde
wallet-root/tde/ewallet.p12 wallet-root/tde/ewallet_2016120918333644.p12 wallet-root/3FD1C95B48205D0FE053C5A0E40AEF8C/tde/ewallet.p12 wallet-root/3FD1C95B48205D0FE053C5A0E40AEF8C/tde/ewallet_2016110918331622.p12 wallet-root/3FD1C95B48205D0FE053C5A0E40AEF8C/tde/ewallet_2016110918332363.p12
Natürlich steht der Parameter WALLET_ROOT auch in der klassischen Oracle Datenbank Betriebsart der sogenannten NON-CDB zur Verfügung. Im Standard ist der Parameter nicht gesetzt und es handelt sich um einen statischen Parameter. Demzufolge muss die Datenbank nach dem Setzen neu gestartet werden.
Im folgenden Beispiel verwende ich das Verzeichnis „/home/oracle/keystore_root“ als Keystore-Basis-Verzeichnis. Für das Beispiel wurde ein Oracle Database Cloud Service Enterprise Edition verwendet.
[oracle@TDE cdb1]$ sqlplus / as sysdba SQL*Plus: Release 18.0.0.0.0 Production on Thu Apr 5 12:32:16 2018 Version 18.1.0.0.0 Copyright (c) 1982, 2017, Oracle. All rights reserved. Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.1.0.0.0 SQL> ALTER SYSTEM SET WALLET_ROOT="/home/oracle/keystore_root" SCOPE=SPFILE; System altered. SQL> SHUTDOWN IMMEDIATE; Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP ORACLE instance started. Total System Global Area 4280905608 bytes Fixed Size 8904584 bytes Variable Size 2332033024 bytes Database Buffers 1593835520 bytes Redo Buffers 346132480 bytes Database mounted. Database opened. SQL> show parameter wallet NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ wallet_root string /home/oracle/keystore_root SQL>
Datenbank Initialisierungsparameter TDE_CONFIGURATION
Zudem wurde der Datenbank-Initialisierungsparameter TDE_CONFIGURATION eingeführt.
HINWEIS: Dieser Parameter kann nur in einer Oracle Database Enterprise Edition auf Engineered Systems und ab Oracle Database Cloud Service Enterprise Edition aufwärts verwendet werden.
Bevor dieser Parameter gesetzt werden kann, muss das Keystore-Basis-Verzeichnis mittels WALLET_ROOT Parameter gesetzt sein.
TDE_CONFIGURATION sorgt dafür, dass die PDBs wissen, welche Art von Keystore verwendet werden soll.
Gesetzt wird dieser Parameter sowohl in der CDB als auch in jeder PDB. Das folgende Beispiel verwendet den Keystore-Typ FILE, also ein Wallet als Keystore:
SQL> ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE" SCOPE=both; System altered. SQL> SHOW PARAMETER TDE_CONFIGURATION NAME TYPE VALUE ------------------------------------ --------------------------------- ------------------------------ tde_configuration string KEYSTORE_CONFIGURATION=FILE
Bei einer Multitenant-Umgebung mit zwei Pluggable-Databases PDB1 und PDB2 (ohne PDB$SEED) sieht es nun wie folgt aus.
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 READ WRITE NO 4 PDB2 READ WRITE NO SQL> SELECT CON_ID, KEYSTORE_MODE, WRL_PARAMETER, WRL_TYPE, STATUS FROM V$ENCRYPTION_WALLET; CON_ID KEYSTORE WRL_PARAMETER WRL_TYPE STATUS ---------- -------- --------------------------------- --------------- ------------------------------ 1 NONE FILE CLOSED 2 UNITED FILE CLOSED 3 UNITED FILE CLOSED 4 UNITED FILE CLOSED
Die CDB-Root (CON_ID 1) befindet sich zu diesem Zeitpunkt immer im Keystore Modus NONE, und alle weiteren PDBs (CON_ID 3 und 4), inklusive der PDB$SEED (CON_ID 2), sind standardmäßig auf UNITED festgelegt. Die Einstellung UNITED bedeutet, dass momentan alle PDBs einen gemeinsamen Keystore verwenden. Dies ist die Standardeinstellung.
Neu mit 18c ist auch, dass zwei Betriebsvarianten der Keystores möglich sind: Ein United-Modus und ein Isolation-Modus. Im United-Modus, werden alle TDE-Master-Keys wie gewohnt in einem der CDB zugeordneten Keystore gespeichert. Im Isolation Modus hingegen erhält jede PDB einen eigenen Keystore. Der entscheidende Vorteil ist hier, dass ausschließlich der Administrator der PDB das Passwort des Keystores kennt. Wird der Keystore im United Modus für die PDBs verwendet, hat der CDB Administrator im Gegensatz dazu Zugriff auf alle dort gespeicherten TDE Master-Keys.
Um jetzt einzelne PDBs in den Keystore-Isolations-Modus zu bringen ist es notwendig, den bereits beschriebenen Parameter TDE_CONFIGURATION in den entsprechenden PDBs zu setzen.
SQL> alter session set container=pdb1; Session altered. SQL> set linesize 1000 SQL> col WRL_PARAMETER FORMAT A70 SQL> col WRL_TYPE FORMAT A15 SQL> SELECT KEYSTORE_MODE, WRL_PARAMETER, WRL_TYPE, STATUS FROM V$ENCRYPTION_WALLET; KEYSTORE WRL_PARAMETER WRL_TYPE STATUS -------- ---------------------------------------------------------------------- ------------- --------------- UNITED FILE OPEN_NO_MASTER_KEY SQL> ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE" SCOPE=both; System altered. SQL> SELECT KEYSTORE_MODE, WRL_PARAMETER, WRL_TYPE, STATUS FROM V$ENCRYPTION_WALLET; KEYSTORE WRL_PARAMETER WRL_TYPE STATUS -------- ---------------------------------------------------------------------- ------------- --------------- ISOLATED /home/oracle/keystore_root/691A1250F7C14EB5E0530201000A7EA2/tde/ FILE NOT_AVAILABLE SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY welcome2; keystore altered. SQL> SELECT KEYSTORE_MODE, WRL_PARAMETER, WRL_TYPE, STATUS FROM V$ENCRYPTION_WALLET; KEYSTORE WRL_PARAMETER WRL_TYPE STATUS -------- ---------------------------------------------------------------------- ------------- --------------- ISOLATED /home/oracle/keystore_root/691A1250F7C14EB5E0530201000A7EA2/tde/ FILE OPEN_NO_MASTER_KEY SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "welcome2" WITH BACKUP; keystore altered. SQL> SELECT KEYSTORE_MODE, WRL_PARAMETER, WRL_TYPE, STATUS FROM V$ENCRYPTION_WALLET; KEYSTORE WRL_PARAMETER WRL_TYPE STATUS -------- ---------------------------------------------------------------------- ------------- --------------- ISOLATED /home/oracle/keystore_root/691A1250F7C14EB5E0530201000A7EA2/tde/ FILE OPEN SQL>
Dies kann bei Bedarf auf anderen PDBs angewandt werden. Es besteht die Möglichkeit, für jede PDB individuell einen anderen Keystore-Typ zu verwenden.
SQL> set linesize 1000 SQL> col WRL_PARAMETER FORMAT A70 SQL> col WRL_TYPE FORMAT A15 SQL> SELECT KEYSTORE_MODE, WRL_PARAMETER, WRL_TYPE, STATUS FROM V$ENCRYPTION_WALLET; KEYSTORE WRL_PARAMETER WRL_TYPE STATUS -------- ---------------------------------------------------------------------- ------------- --------------- NONE /home/oracle/keystore_root/tde/ FILE OPEN UNITED FILE OPEN ISOLATED /home/oracle/keystore_root/691A1250F7C14EB5E0530201000A7EA2/tde/ FILE OPEN ISOLATED /home/oracle/keystore_root/691A836C2EB06E3AE0530201000AA91E/tde/ FILE OPEN SQL>
Wie hier zu sehen ist, besitzt jetzt jede PDB ihren eigenen isolierten file-basierenden Keystore.
Im Filesystem sieht das Ganze dann so aus.
[oracle@tde keystore_root]$ pwd /home/oracle/keystore_root [oracle@tde keystore_root]$ ll total 12 drwxr-x--- 3 oracle oinstall 4096 5. Apr 12:47 691A1250F7C14EB5E0530201000A7EA2 drwxr-x--- 3 oracle oinstall 4096 5. Apr 13:04 691A836C2EB06E3AE0530201000AA91E drwxr-x--- 2 oracle oinstall 4096 5. Apr 13:20 tde [oracle@tde keystore_root]$
Fazit
Dieses Feature ist ein konsequenter und wichtiger Schritt in Richtung Mandantenfähigkeit. Es erweitert die Fähigkeiten zur Isolierung von PDBs bezüglich des Schlüsselmanagements und ermöglicht dem Mandanten somit eine bessere Zugriffskontrolle auf seine Daten.
Lizenzhinweis
Dieser Parameter kann nur in einer Oracle Database Enterprise Edition auf Engineered Systems und ab Oracle Database Cloud Service Enterprise Edition aufwärts verwendet werden. Licensing Information User Manual
Weitere Informationen
Zurück zur Community-Seite