Daten beim Export in Object Storage verschlüsseln

Sie können Tabellendaten beim Export in Object Storage verschlüsseln.

Verwenden Sie den Parameter format und die Option encryption mit DBMS_CLOUD.EXPORT_DATA, um Daten beim Export aus Autonomous Database in Object Storage zu verschlüsseln.

Beachten Sie Folgendes, wenn Sie verschlüsselte Daten in Object Storage exportieren:

  • Die Option encryption wird nur beim Exportieren von Daten aus Autonomous Database als CSV, JSON oder XML in Object Storage unterstützt.

  • Wenn der Export sowohl Verschlüsselung als auch Komprimierung umfasst, lautet die Reihenfolge der Vorgänge: Zuerst werden die Daten komprimiert, dann werden die Daten verschlüsselt und dann in Object Storage hochgeladen.

  • Zwei Verschlüsselungsmethoden werden unterstützt:

    • Verwenden einer benutzerdefinierten Funktion.

    • Verwenden eines von DBMS_CRYPTO angegebenen Verschlüsselungsalgorithmus.

      Informationen zu den kryptografischen Funktionen und Verfahren zur Verschlüsselung und Entschlüsselung finden Sie unter DBMS_CRYPTO.

Daten mit DBMS_CRYPTO-Verschlüsselungsalgorithmen verschlüsseln

Hier werden die Schritte zum Verschlüsseln von Daten mit DBMS_CRYPTO-Verschlüsselungsalgorithmen beim Export in Cloud-Objektspeicher beschrieben.

Führen Sie die folgenden Schritte aus, um Daten beim Export in Cloud Object Storage zu verschlüsseln (in diesem Beispiel werden Tabellendaten in eine CSV-Datei exportiert):

  1. Stellen Sie eine Verbindung zu Ihrer Autonomous Database-Instanz her.
  2. Speichern Sie die Zugangsdaten für den Cloud-Objektspeicher mit DBMS_CLOUD.CREATE_CREDENTIAL.

    Beispiel:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'OBJ_STORE_CRED',
        username        => 'user1@example.com',
        password        => 'password'
      );
    END;
    /

    Die Werte, die Sie für username und password angeben, hängen vom verwendeten Cloud-Objektspeicherservice ab.

    Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

  3. Erstellen Sie Zugangsdaten, um den Verschlüsselungsschlüssel zu speichern (den Verschlüsselungsschlüssel, der für die Verschlüsselung von Daten verwendet werden soll).

    Wenn Sie Daten mit DBMS_CRYPTO-Verschlüsselungsalgorithmen verschlüsseln, speichern Sie den Verschlüsselungsschlüssel in Zugangsdaten. Der Schlüssel wird in den Zugangsdaten, die Sie mit DBMS_CLOUD.CREATE_CREDENTIAL erstellen, im Feld password angegeben.

    Beispiel:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name => 'ENC_CRED_NAME',
        username        => 'Any_username',
        password        => 'password'
      );
    END;
    /
  4. Führen Sie DBMS_CLOUD.EXPORT_DATA aus.

    Verwenden Sie den Parameter format mit der Option encryption. Der Typ encryption gibt den DBMS_CRYPTO-Verschlüsselungsalgorithmus zur Verschlüsselung der Tabellendaten an, und der Wert credential_name sind Zugangsdaten, die das Secret (Verschlüsselungsschlüssel) angeben.

    Beispiel:

    BEGIN
        DBMS_CLOUD.EXPORT_DATA (
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-string/b/bucketname/o/encrypted.csv',
            query           => 'SELECT * FROM ADMIN.employees',
            format          => json_object(
                   'type' value 'csv',
                   'encryption' value  json_object(
                           'type' value DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, 
                           'credential_name' value 'ENC_CRED_NAME'))
          );
    END;
    /

    Dadurch werden die Daten aus der Tabelle EMPLOYEES verschlüsselt und in eine CSV-Datei exportiert.

    Weitere Informationen zu Verschlüsselungsalgorithmen finden Sie unter DBMS_CRYPTO Algorithmen.

    In diesem Beispiel ist namespace-string der Oracle Cloud Infrastructure-Objektspeicher-Namespace und bucketname der Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces.

    Weitere Informationen finden Sie unter Prozedur EXPORT_DATA und Paketformatoptionen DBMS_CLOUD für EXPORT_DATA.

Wenn Sie Dateien mit DBMS_CLOUD.EXPORT_DATA verschlüsseln und DBMS_CRYPTO-Verschlüsselungsalgorithmen zur Verschlüsselung der Dateien verwenden, stehen Ihnen folgende Optionen zur Verfügung, um die exportierten Dateien zu verwenden oder zu importieren:

  • Sie können DBMS_CLOUD.COPY_DATA oder DBMS_CLOUD.COPY_COLLECTION mit denselben Verschlüsselungsalgorithmusoptionen und dem Schlüssel zum Entschlüsseln der Dateien verwenden.

    Weitere Informationen finden Sie unter Daten mit DBMS_CRYPTO-Algorithmen entschlüsseln und laden.

  • Sie können die Daten in einer externen Tabelle abfragen, indem Sie dieselben Verschlüsselungsalgorithmusoptionen und den Schlüssel zum Entschlüsseln der Dateien mit einem der folgenden Verfahren angeben:

    • DBMS_CLOUD.CREATE_EXTERNAL_TABLE

    • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE

    • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE

      Für DBMS_CLOUD.CREATE_HYBRID_PART_TABLE gilt diese Option nur für die Object Storage-Dateien.

    Weitere Informationen finden Sie unter Daten mit DBMS_CRYPTO-Algorithmen entschlüsseln und laden.

  • Auf einem System, das keine Autonomous Database-Instanz ist, können Sie das Package DBMS_CRYPTO mit denselben Algorithmusoptionen und dem Schlüssel zum Entschlüsseln der Dateien verwenden.

    Beachten Sie, dass der Schlüssel als VARCHAR2 in den Zugangsdaten in Autonomous Database gespeichert wird. DBMS_CRYPTO verwendet jedoch den Typ RAW für den Schlüsselparameter.

    Weitere Informationen zu Verschlüsselungsalgorithmen finden Sie unter DBMS_CRYPTO Algorithmen.

Daten mit einer benutzerdefinierten Verschlüsselungsfunktion verschlüsseln

Hier werden die Schritte zum Verschlüsseln von Daten mit einer benutzerdefinierten Verschlüsselungsfunktion beim Export in Cloud-Objektspeicher beschrieben.

Führen Sie die folgenden Schritte aus, um Daten beim Export in Cloud Object Storage zu verschlüsseln (in diesem Beispiel werden Tabellendaten in eine CSV-Datei exportiert):

  1. Stellen Sie eine Verbindung zu Ihrer Autonomous Database-Instanz her.
  2. Speichern Sie die Zugangsdaten für den Cloud-Objektspeicher mit DBMS_CLOUD.CREATE_CREDENTIAL.

    Beispiel:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'OBJ_STORE_CRED',
        username        => 'user1@example.com',
        password        => 'password'
      );
    END;
    /

    Die Werte, die Sie für username und password angeben, hängen vom verwendeten Cloud-Objektspeicherservice ab.

    Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

  3. Erstellen Sie eine benutzerdefinierte Callback-Funktion zur Verschlüsselung von Daten.

    Beispiel:

    CREATE OR REPLACE FUNCTION encryption_func (data IN BLOB)
      RETURN BLOB
      IS
          l_encrypted_data BLOB;
           BEGIN   
         DBMS_LOB.CREATETEMPORARY (l_encrypted_data, TRUE, DBMS_LOB.CALL);
         DBMS_CRYPTO.ENCRYPT (
             dst => l_encrypted_data,
             src => data,
             typ => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,
             key => 'encryption key'
          );
         RETURN l_encrypted_data;
    END encryption_func;
    /

    Dadurch wird die Verschlüsselungsfunktion ENCRYPTION_FUNC erstellt. Diese Funktion verschlüsselt Daten mit einem Stream- oder Block-Cipher mit einem vom Benutzer angegebenen Schlüssel.

    Hinweis:

    Sie müssen einen Verschlüsselungsschlüssel erstellen, der als Wert im Parameter KEY verwendet werden soll. Weitere Informationen zum Generieren des Verschlüsselungsschlüssels finden Sie unter DBMS_CRYPTO Operational Notes.
  4. Führen Sie DBMS_CLOUD.EXPORT_DATA mit dem Parameter format aus, nehmen Sie die Option encryption auf, und geben Sie einen user_defined_function an.

    Beispiel:

    BEGIN
          DBMS_CLOUD.EXPORT_DATA (
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-string/b/bucketname/o/encrypted.csv',
            query           => 'SELECT * FROM ADMIN.emp',
            format          => json_object( 
                                  'type' value 'csv', 
                                  'encryption' value json_object('user_defined_function' value 'admin.encryption_func'))
          );
    END;
    /

    Dadurch werden die Daten aus der angegebenen Abfrage in der Tabelle EMP verschlüsselt, und die Daten werden als CSV-Datei in Cloud Object Storage exportiert. Der Parameter format mit dem Wert encryption gibt die benutzerdefinierte Verschlüsselungsfunktion an, mit der die Daten verschlüsselt werden sollen.

    Hinweis:

    Sie benötigen die Berechtigung EXECUTE für die Verschlüsselungsfunktion.

    In diesem Beispiel ist namespace-string der Oracle Cloud Infrastructure-Objektspeicher-Namespace und bucketname der Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces.

    Weitere Informationen finden Sie unter Prozedur EXPORT_DATA und Paketformatoptionen DBMS_CLOUD für EXPORT_DATA.