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- oder bastion-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 oder WALLET_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.

  1. 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
    
  2. 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.

  3. 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 Datei init.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
    
  4. 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).

  1. 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 Parameter SALT oder NO SALT verwenden, der mit der Klausel ENCRYPT 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 Algorithmus AES128 oder dem Algorithmus des dynamischen Parameters TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM, wenn Sie die ENCRYPTION-Klausel von CREATE TABLESPACE sowohl für Cloud- als auch für lokale Szenarien weglassen. Wenn Sie jedoch die ENCRYPTION-Klausel angeben, hat der von Ihnen angegebene Algorithmus Vorrang vor AES128.

  • DDL verschlüsselt den Tablespace mit der angegebenen Einstellung der ENCRYPTION-Klausel von CREATE 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 ist CLOUD_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

  1. Richten Sie Oracle Wallet ein.

  2. 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 Befehl CONFIGURE ENCRYPTION angegeben werden. Dieser verwendet standardmäßig eine transparente Verschlüsselung.

  3. 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.