Daten beim Exportieren 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 zu verschlüsseln, wenn Sie aus Autonomous Database in Object Storage exportieren.

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

  • Die Option encryption wird nur unterstützt, wenn Daten aus Autonomous Database als CSV, JSON oder XML in Object Storage exportiert werden.

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

  • Es gibt zwei unterstützte Verschlüsselungsmethoden:

    • Verwenden einer benutzerdefinierten Funktion.

    • Verwendung 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.

Themen

Daten mit DBMS_CRYPTO-Verschlüsselungsalgorithmen verschlüsseln

Zeigt die Schritte zum Verschlüsseln von Daten mit Verschlüsselungsalgorithmen DBMS_CRYPTO beim Export in Cloud Object Storage an.

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. Verbinden Sie sich mit Ihrer Autonomous Database-Instanz.

    Weitere Informationen finden Sie unter Verbindung zu Autonomous Database herstellen.

  2. Speichern Sie Ihre Zugangsdaten für die 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.

    Das Erstellen von Zugangsdaten für den Zugriff auf den Oracle Cloud Infrastructure-Objektspeicher ist nicht erforderlich, wenn Sie Resource-Principal-Zugangsdaten aktivieren. Weitere Informationen finden Sie unter Resource Principal für den Zugriff auf Oracle Cloud Infrastructure-Ressourcen nutzen.

  3. Erstellen Sie Zugangsdaten zum Speichern des Verschlüsselungsschlüssels (den Verschlüsselungsschlüssel, der zum Verschlüsseln 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 im Feld password in den Zugangsdaten angegeben, die Sie mit DBMS_CLOUD.CREATE_CREDENTIAL erstellen.

    Beispiel:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name => 'ENC_CRED_NAME',
        username        => 'Any_username',
        password        => 'password'
      );
    END;
    /

    Alternativ können Sie Zugangsdaten erstellen, um den Schlüssel in einem Vault zu speichern. Beispiel:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name  => 'ENC_CRED_NAME',
        params           => JSON_OBJECT ('username' value 'Any_username',
                                        'region'    value 'Region',
                                        'secret_id' value 'Secret_id_value'));
    END;
    /
    Hinweis

    Der Parameter username, den Sie in den Zugangsdaten angeben, in denen der Schlüssel gespeichert ist, kann eine beliebige Zeichenfolge sein.

    Dadurch werden die Zugangsdaten ENC_CRED_NAME erstellt, bei denen es sich um Vault-Secret-Zugangsdaten handelt, bei denen das Secret (Entschlüsselungs-/Verschlüsselungsschlüssel) als Secret in Oracle Cloud Infrastructure Vault gespeichert wird.

    Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

  4. Führen Sie DBMS_CLOUD.EXPORT_DATA aus.

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

    Beispiel:

    BEGIN
        DBMS_CLOUD.EXPORT_DATA (
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-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 DBMS_CLOUD Packageformatoptionen für EXPORT_DATA.

Nachdem Sie Dateien mit DBMS_CLOUD.EXPORT_DATA verschlüsselt haben und die Dateien mit DBMS_CRYPTO-Verschlüsselungsalgorithmen verschlüsseln, haben Sie die folgenden Optionen zum Verwenden oder Importieren der exportierten Dateien:

  • 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 einer der folgenden Prozeduren 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.

  • Bei einem System, das kein Autonomous Database-System 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 ist, DBMS_CRYPTO jedoch den Typ RAW für den Schlüsselparameter verwendet.

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

Daten mit einer benutzerdefinierten Verschlüsselungsfunktion verschlüsseln

Zeigt die Schritte zum Verschlüsseln von Daten mit einer benutzerdefinierten Verschlüsselungsfunktion beim Export in Cloud Object Storage an.

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. Verbinden Sie sich mit Ihrer Autonomous Database-Instanz.

    Weitere Informationen finden Sie unter Verbindung zu Autonomous Database herstellen.

  2. Speichern Sie Ihre Zugangsdaten für die 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.

    Das Erstellen von Zugangsdaten für den Zugriff auf den Oracle Cloud Infrastructure-Objektspeicher ist nicht erforderlich, wenn Sie Resource-Principal-Zugangsdaten aktivieren. Weitere Informationen finden Sie unter Resource Principal für den Zugriff auf Oracle Cloud Infrastructure-Ressourcen nutzen.

  3. Erstellen Sie eine benutzerdefinierte Callback-Funktion zum Verschlüsseln 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 bereitgestellten 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 eine 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/namespace-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 der Tabelle "on" 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 DBMS_CLOUD Packageformatoptionen für EXPORT_DATA.