Oracle Transparency Data Encryption (TDE) in Bare-Metal-Lösung bereitstellen und verwalten
Auf dieser Seite wird beschrieben, wie Sie die transparente Sicherheitsverschlüsselung von Oracle (TDE) bereitstellen und Oracle Wallet und Schlüssel in der Bare-Metal-Lösung verwalten.
Überblick
Mit Oracle Advanced Security TDE werden inaktive Daten in Oracle-Datenbanken transparent verschlüsselt. Außerdem wird der unbefugte Zugriff auf Datenbankdateien verhindert. TDE kann ganze Datenbanksicherungen (RMAN) und DataPump-Exporte sowie bestimmte Tablespaces und Spalten verschlüsseln.
Funktionsweise der transparenten Datenverschlüsselung
TDE erstellt und verwaltet mehrere für die Verschlüsselung verwendete Schlüssel. Diese Schlüssel müssen geschützt werden, denn wenn ein Angreifer in den Besitz der verschlüsselten Daten und übereinstimmenden Schlüssel gelangt, kann er sie einfach entschlüsseln und klar lesbare Daten erhalten.
TDE hat eine zweistufige Schlüsselarchitektur mit Datenverschlüsselungsschlüsseln, die von einem einzelnen Datenbankmasterschlüssel verpackt werden. Der Masterschlüssel wird von verschlüsselten Daten getrennt außerhalb der Datenbank gespeichert. Dies kann ein Wallet für den Oracle-Softwareschlüsselspeicher oder ein HSM-Schlüsselspeicher (Hardware Security Module) sein, also ein Schlüsselspeicher, der direkt vom Datenbanksicherheitsadministrator verwaltet wird.
TDE bietet zwei Schlüsselspeicheroptionen, um verschiedene Kundenumgebungen zu unterstützen. Standardmäßig speichert TDE seinen Masterschlüssel in einem Oracle Wallet, einer auf PKCS#12-Normen basierten Schlüsselspeicherdatei. Wallets bieten eine einfache Lösung für eine kleine Anzahl verschlüsselter Datenbanken.
TDE für Oracle-Datenbank 11g auf dem Bare-Metal-Lösungsserver aktivieren
Sie können Verschlüsselungsvorgänge auf Spalten- und Tablespace-Ebene ausführen. Sie können TDE auch auf RMAN-Sicherungen anwenden.
TDE-Voraussetzungen aktivieren
Sie müssen Ihre Datenbank vorbereiten. Legen Sie dazu einen Schlüsselspeicher (Oracle Wallet
für 11g) fest und erstellen Sie einen ersten Masterschlüssel.
Oracle Wallet auf Bare-Metal-Lösungsserver konfigurieren
Stellen Sie von einem
jump host
- oderbastion
-Computer in Ihrem Projekt eine Verbindung zu einem der Bare-Metal-Lösungsserver her.$ ssh customeradmin@192.168.1.10 $ su - oracle
Legen Sie die Umgebungsvariable fest.
[oracle@svr002 ~]$ . oraenv ORACLE_SID = [tdedb] ? DB11G The Oracle base has been changed from /u01/app/oracle to /apps/oracle/oracle_base [oracle@svr002 ~]$ export ORACLE_SID=DB11G1
Stellen Sie ein Verbindung als sysdba her.
[oracle@svr002 ~]$ sqlplus / as sysdba
Prüfen Sie, ob alle folgenden Umgebungsvariablen richtig eingestellt sind.
$ echo $ORACLE_HOME $ echo $ORACLE_BASE $ echo $DB_UNIQUE_NAME
Erstellen Sie ein neues Verzeichnis für die Wallet-Dateien.
$ mkdir -p $ORACLE_BASE/admin/DB11G/wallet
Verwenden Sie das orapki-Dienstprogramm, um das Wallet zu erstellen und die automatische Anmeldung zu aktivieren, damit das Wallet bei Neustarts nicht aktiviert werden muss.
$ orapki wallet create -wallet $ORACLE_BASE/admin/DB11G/wallet -auto_login -pwd Oracle2020
Oracle verwendet die Standardpfade für das Wallet.
$ ORACLE_BASE/admin/$DB_UNIQUE_NAME/wallet $ ORACLE_HOME/admin/$DB_UNIQUE_NAME/wallet
Wenn Sie nicht den Standardpfad verwenden, müssen Sie den alternativen Pfad in der Datei
sqlnet.ora
festlegen. Legen Sie einen dieser Parameter fest:ENCRYPTION_WALLET_LOCATION
oderWALLET_LOCATION
.So finden Sie den Wallet-Pfad:
SQL> COL wrl_type FORMAT a12 COL wrl_parameter FORMAT a35 COL status FORMAT a15 SQL> select * from v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS -------- ------------- ------- file /apps/oracle/oracle_base OPEN_NO_MASTER_KEY /admin/DB11G/wallet
So legen Sie den Wallet-Pfad in der Datei
sqlnet.ora
fest:$ vi sqlnet.ora ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/apps/oracle/oracle_base/admin/DB11G/wallet)) Or WALLET_LOCATION = (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/apps/oracle/oracle_base/admin/DB11G/wallet))
Fügen Sie den Nutzernamen und das Passwort hinzu. Um einer vorhandenen Wallet-Adresse einen Nutzernamen und ein Passwort hinzuzufügen, verwenden Sie den Befehl
mkstore
mit der Option-createCredential
:mkstore -wrl <wallet_location> -createCredential <TNS_alias> <username> <password> $ mkstore -wrl apps/oracle/oracle_base/admin/DB11G/wallet -createCredential DB11G testuser testtest123
Sie können sich mit
testuser@SID
anmelden, ohne das Passwort einzugeben.Erstellen Sie einen ersten Masterschlüssel.
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY Oracle2020;
Prüfen Sie, ob der Wallet-Status
OPEN
lautet.SQL> COL wrl_type FORMAT a12 COL wrl_parameter FORMAT a35 COL status FORMAT a15 SQL> select * from v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS -------- ------------- ------ file /apps/oracle/oracle_base/ OPEN admin/DB11G/wallet
So öffnen und schließen Sie das Wallet:
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "Password"; SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE;
TDE auf Tablespace-Ebene aktivieren
Sie können Verschlüsselungsvorgänge mit der Anweisung CREATE TABLESPACE SQL
ausführen.
Neue Tablespaces verschlüsseln
Wenn Sie einen neuen Tablespace erstellen, können Sie dessen Verschlüsselungseinstellungen während der Erstellung konfigurieren.
Achten Sie darauf, dass der COMPATIBLE-Initialisierungsparameter für die Verschlüsselung des Tabellenbereichs mindestens 11.2.0.0 ist.
SQL> SHOW PARAMETER COMPATIBLE NAME TYPE VALUE ---- ---- ------ compatible string 11.2.0.4.0
Prüfen Sie, ob Sie den TDE-Masterverschlüsselungsschlüssel konfiguriert haben. Sie können ihn im Abschnitt Voraussetzungen unter "Ersten Masterschlüssel erstellen" prüfen.
Erstellen Sie den verschlüsselten Tablespace.
So prüfen Sie den Pfad der Datendatei:
SQL> select * from dba_data_files ;
So führen Sie die CREATE TABLESPACE-Anweisung mit ihren Verschlüsselungsklauseln aus:
SQL> create TABLESPACE encrypted_ts DATAFILE '+DATA/db11g/datafile/encrypted_ts01.dbf' SIZE 5 M AUTOEXTEND on NEXT 64K ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);
ENCRYPTION USING 'AES256' ENCRYPT gibt den Verschlüsselungsalgorithmus und die Schlüssellänge für die Verschlüsselung an. Die Klausel ENCRYPT verschlüsselt den Tablespace.
Wenn die USING-Klausel nicht angegeben ist, verwendet der Verschlüsselungsalgorithmus standardmäßig 'AES128'. Außerdem muss die Standardspeicherklausel von ENCRYPT angegeben werden. Sie können auch den dynamischen Parameter TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM festlegen, um den Standardverschlüsselungsalgorithmus für zukünftige Vorgänge zum Erstellen von Tablespace mithilfe der ALTER SYSTEM-Anweisung zu definieren:
sql> ALTER SYSTEM SET TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM = value;
Der Wert kann einer der folgenden Verschlüsselungsalgorithmen sein: AES128, AES192, AES256, 3DES168, ARIA128, ARIA192, ARIA256, SEED128 und GOST256. Der Standardwert ist AES128.
Alternativ können Sie
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
als Initialisierungsparameter in der Dateiinit.ora
festlegen.Sie können feststellen, ob die Tablespace-Verschlüsselung konfiguriert. Dazu prüfen Sie in der Spalte ENCRYPTED der Ansichten DBA_TABLESPACES und USER_TABLESPACES, ob der Tablespace verschlüsselt ist oder nicht.
SQL> SELECT tablespace_name, encrypted FROM dba_tablespaces; TABLESPACE_NAME ENC ----------------------------------- SYSTEM NO SYSAUX NO UNDOTBS1 NO TEMP NO USERS NO UNDOTBS2 NO ENCRYPTED_TS YES
Testen Sie die Verschlüsselung.
SQL> CREATE TABLE test (id NUMBER(10),data VARCHAR2(50))TABLESPACE encrypted_ts; Table created. SQL> CREATE INDEX test_idx ON test(data) TABLESPACE encrypted_ts; Index created. SQL> INSERT INTO test (id, data) VALUES (1, 'Test Encryptio'); 1 row created. SQL> COMMIT; Commit complete
Leeren Sie den Puffercache, um sicherzustellen, dass die Daten in die Datendatei geschrieben werden.
SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;
Lesen Sie die Daten in der Datendatei mit dem Befehl "strings".
export ORACLE_SID=+ASM asmcmd ASMCMD> strings +DATA/db11g/datafile/encrypted_ts01.dbf
Die Daten werden in einem Binärformat angezeigt.
TDE auf Tabellenspaltenebene aktivieren
Die TDE-Spaltenverschlüsselung kann zur Verschlüsselung bestimmter vertraulicher Spaltendaten in Datenbanktabellen verwendet werden, z. B. Kreditkartennummern, Sozialversicherungsnummern und persönliche Zahlungskartennummern (PAN).
Erstellen Sie eine Tabelle mit einer verschlüsselter Spalte.
SQL> CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128), empID NUMBER ENCRYPT NO SALT, salary NUMBER(6) ENCRYPT USING '3DES168' ); Table created.
SALT
ist eine Möglichkeit, die Sicherheit verschlüsselter Daten zu erhöhen. Dabei handelt es sich um einen zufälligen String, der den Daten vor der Verschlüsselung hinzugefügt wird. Dadurch werden Wiederholungen im Klartext in der Verschlüsselung unterschiedlich angezeigt.SALT
verhindert auf diese Weise eine Möglichkeit, mit der Angreifer Daten stehlen, nämlich übereinstimmende Muster im verschlüsselten Text zu suchen. Sie können den ParameterSALT
oderNO SALT
verwenden, der mit der KlauselENCRYPT
angegeben wird.Mit dem Befehl
ALTER TABLE
können Sie Spalten in einer vorhandenen Tabelle verschlüsseln. Dazu fügen Sie entweder eine neue verschlüsselte Spalte hinzu oder verschlüsseln eine bereits vorhandene Spalte.So fügen Sie einer vorhandenen Datenbanktabelle eine neue verschlüsselte Spalte hinzu:
SQL> ALTER TABLE employee ADD (credit_card_number VARCHAR2(16) ENCRYPT NO SALT); Table altered.
So verschlüsseln Sie eine bereits vorhandene Spalte in einer Datenbanktabelle:
SQL> ALTER TABLE employee MODIFY (last_name encrypt); Table altered.
So fügen Sie
SALT
zu einer verschlüsselten Spalte in einer Datenbanktabelle hinzu:SQL> ALTER TABLE employee MODIFY (last_name encrypt salt); Table altered.
So entschlüsseln Sie eine vorhandene Spalte in einer Datenbanktabelle:
SQL> ALTER TABLE employee MODIFY (last_name decrypt); Table altered.
So entfernen Sie SALT aus einer verschlüsselten Spalte in einer Datenbanktabelle:
SQL> ALTER TABLE employee MODIFY (last_name encrypt no salt); Table altered.
So ändern Sie den verschlüsselten Schlüssel für die Tabelle mit einer oder mehreren verschlüsselten Spalten:
SQL> ALTER TABLE employee rekey; Table altered.
So ändern Sie den Verschlüsselungsalgorithmus für die Tabelle mit einer oder mehreren verschlüsselten Spalten:
SQL> ALTER TABLE employee rekey USING '3DES168'; Table altered.
Zukünftige Tablespaces verschlüsseln
Sie können Oracle Database so konfigurieren, dass zukünftige Tablespaces automatisch verschlüsselt werden, wenn Sie diese mit dem Datenbankinitialisierungsparameter ENCRYPT_NEW_TABLESPACES
erstellen.
Verwenden Sie den folgenden ALTER SYSTEM
-Befehl:
SQL> ALTER SYSTEM SET ENCRYPT_NEW_TABLESPACES=value;
Mögliche Werte sind:
ALWAYS
verschlüsselt den Tablespace automatisch mit dem AlgorithmusAES128
oder dem Algorithmus des dynamischen ParametersTABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
, wenn Sie dieENCRYPTION
-Klausel vonCREATE TABLESPACE
sowohl für Cloud- als auch für lokale Szenarien weglassen. Wenn Sie jedoch dieENCRYPTION
-Klausel angeben, hat der von Ihnen angegebene Algorithmus Vorrang vorAES128
.DDL
verschlüsselt den Tablespace mit der angegebenen Einstellung derENCRYPTION
-Klausel vonCREATE TABLESPACE
, sowohl für die Cloud als auch für lokale Umgebungen.CLOUD_ONLY
(in unserem Anwendungsfall nicht zutreffend) gilt nur für eine Oracle-Cloudumgebung. Standardmäßig istCLOUD_ONLY
ausgewählt.
TDE Tablespace-Verschlüsselung oder TDE-Spaltenverschlüsselung?
TDE-SPALTENVERSCHLÜSSELUNG | TDE-TABELLENVERSCHLÜSSELUNG |
---|---|
Speicherort vertraulicher Informationen ist bekannt | Speicherort vertraulicher Informationen ist unbekannt |
Max. 5% aller Anwendungsspalten sind Verschlüsselungskandidaten | Die meisten Anwendungsdaten gelten als vertraulich oder es gelten mehrere nationale und internationale Sicherheits- und Datenschutzbestimmungen für Ihre Branche |
Datentyp und -länge werden von der TDE-Spaltenverschlüsselung unterstützt | Nicht alle Datentypen mit vertraulichen Informationen werden von der TDE-Spaltenverschlüsselung unterstützt |
Verschlüsselungskandidaten sind keine Spalten mit Fremdschlüsseln | Verschlüsselungskandidaten sind Fremdschlüsselspalten |
Indexe zu Verschlüsselungskandidaten sind normale B-Baumindexe | Indexe zu Verschlüsselungskandidaten sind Funktionsindexe |
Anwendung führt keine Bereichsscans über verschlüsselte Daten durch | Anwendung sucht nach Bereichen mit vertraulichen Informationen |
Erhöhung des Speichers um 1 bis 52 Byte pro verschlüsseltem Wert | Keine Speichererweiterung akzeptabel |
Auswirkungen auf Leistung sind abhängig vom Prozentsatz verschlüsselter Spalten, von der Häufigkeit, mit der die verschlüsselten Werte ausgewählt oder aktualisiert werden, von der Größe der verschlüsselten Daten und von anderen Variablen | Auswirkungen auf konstante Leistung liegen unter 10% |
Kryptografische Hardware bietet Vorteile, die Sie nutzen möchten | |
Verschlüsselung und Komprimierung bieten Vorteile, die Sie gleichzeitig nutzen möchten |
RMAN-Sicherungsverschlüsselung
Backup-Datensätze werden mithilfe eines in V$RMAN_ENCRYPTION_ALGORITHMS
aufgeführten Algorithmus verschlüsselt. RMAN kann Daten, die in Backup-Datensätze geschrieben wurden, transparent verschlüsseln und diese Backup-Datensätze bei Bedarf in einem RESTORE
-Vorgang wieder entschlüsseln. RMAN bietet drei Verschlüsselungsmodi: transparent, passwortgeschützt und dualer Modus.
Wenn Sie die Verschlüsselung im transparenten Modus (Standard) verwenden möchten, sollten Sie Oracle Encryption Wallet verwenden.
Zur Verwendung des passwortgeschützten Modus muss ein Passwort vom DBA bereitgestellt werden, das zur Verschlüsselung verwendet wird. Sie können den passwortgeschützten Modus durch
SET ENCRYPTION ON IDENTIFIED BY password only
festlegen.Beim dualen Verschlüsselungsmodus können Sie entweder das Oracle Wallet oder ein Passwort zur Entschlüsselung verwenden. Sie können den dualen Modus durch
SET ENCRYPTION ON IDENTIFIED BY password
festlegen.
RMAN-Sicherungsverschlüsselung konfigurieren
Richten Sie Oracle Wallet ein.
Konfigurieren Sie RMAN zur Verwendung der Verschlüsselung.
Legen Sie den RMAN-Verschlüsselungsmodus fest. In diesem Beispiel wird der duale Modus verwendet. Stellen Sie dazu eine Verbindung zur RMAN-Zieldatenbank her und führen Sie den Befehl
SET ENCRYPTION ON IDENTIFIED BY password
aus.[oracle@svr002 ~]$ . oraenv ORACLE_SID = [tdedb] ? DB11G The Oracle base has been changed from /u01/app/oracle to /apps/oracle/oracle_base export ORACLE_SID=DB11G1
Stellen Sie eine Verbindung zum RMAN her.
rman target / RMAN> SET ENCRYPTION ON IDENTIFIED BY <password>; executing command: SET encryption
SET ENCRYPTION
überschreibt die Verschlüsselungseinstellungen, die vom BefehlCONFIGURE ENCRYPTION
angegeben werden. Dieser verwendet standardmäßig eine transparente Verschlüsselung.Konfigurieren Sie den Standardalgorithmus für die Sicherungsverschlüsselung.
Eine Liste der RMAN-Verschlüsselungsalgorithmen erhalten Sie, wenn die Ansicht
v$rman_encryption_algorithms
so abfragen:SQL> COL algorithm_name FORMAT a15 COL algorithm_description FORMAT a15 COL is_default FORMAT a15 SQL> select algorithm_id, algorithm_name, algorithm_description, is_default from v$rman_encryption_algorithms; ALGORITHM_ID ALGORITHM_NAME ALGORITHM_DESCR IS_DEFAULT ----------- -------------- --------------- ---------- 1 AES128 AES 128-bit key YES 2 AES192 AES 192-bit key NO 3 AES256 AES 256-bit key NO
So ändern Sie den Standardalgorithmus:
RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES256'; using target database control file instead of recovery catalog new RMAN configuration parameters: CONFIGURE ENCRYPTION ALGORITHM 'AES256'; new RMAN configuration parameters are successfully stored
Erstellen Sie eine verschlüsselte Sicherung mit dem normalen RMAN-Sicherungsbefehl. Beispiel:
RMAN> backup tablespace users;
So stellen Sie die Sicherung mit dem Verschlüsselungspasswort wieder her:
RMAN> set decryption identified by <password>; RMAN> restore tablespace users;
Wichtige Hinweise
Wenn die erforderlichen Entschlüsselungsschlüssel verfügbar sind, werden verschlüsselte Back-ups während der Wiederherstellung automatisch entschlüsselt. Jeder Back-up-Datensatz erhält einen separaten Schlüssel. Der Schlüssel wird im verschlüsselten Sicherungsbereich gespeichert. Das Back-up wird mit Schlüsseln entschlüsselt, die durch ein vom Nutzer bereitgestelltes Passwort verfügbar werden oder durch den Oracle-Softwareschlüsselspeicher.
Die transparente Sicherungsverschlüsselung unterstützt sowohl den Schlüsselspeicher mit automatischer Anmeldung als auch den passwortbasierten Softwareschlüsselspeicher. Wenn Sie den Schlüsselspeicher mit automatischer Anmeldung verwenden, können verschlüsselte Sicherungsvorgänge jederzeit durchgeführt werden, da der Schlüsselspeicher mit automatischer Anmeldung immer geöffnet ist. Wenn Sie den passwortbasierten Softwareschlüsselspeicher verwenden, muss der Schlüsselspeicher geöffnet werden, bevor Sie eine Sicherungsverschlüsselung durchführen können.
Wenn Sie einen Schlüsselspeicher mit automatischer Anmeldung verwenden, sollten Sie ihn nicht zusammen mit Ihren verschlüsselten Back-up-Daten sichern, denn Nutzer können die verschlüsselten Back-ups lesen, wenn sie sowohl die Back-ups als auch den Schlüsselspeicher mit automatischer Anmeldung erhalten haben. Es ist sicher, den Oracle-Schlüsselspeicher zu sichern, da diese Form des Schlüsselspeichers nicht ohne das Schlüsselspeicherpasswort verwendet werden kann.
Wenn einige Spalten in der Datenbank mit der Spaltenverschlüsselung "Transparent Data Encryption (TDE)" verschlüsselt sind und diese Spalten mit der Sicherungsverschlüsselung gesichert werden, dann werden diese Spalten während der Sicherung ein zweites Mal verschlüsselt. Wenn die Back-up-Datensätze während eines Wiederherstellungsvorgangs entschlüsselt werden, werden diese verschlüsselten Spalten in ihre ursprüngliche verschlüsselte Form zurückversetzt.
Wenn Sie den Oracle-Schlüsselspeicher verlieren, können Sie die transparent verschlüsselten Back-ups nicht wiederherstellen. Falls Sie das Passwort vergessen oder verlieren, das Sie zum Verschlüsseln einer passwortverschlüsselten Sicherung verwendet haben, können Sie die Sicherung nicht wiederherstellen.