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 in Object Storage als CSV, JSON oder XML unterstützt.

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

  • Zwei Verschlüsselungsmethoden werden unterstützt:

    • Verwenden einer benutzerdefinierten Funktion.

    • Mit einem angegebenen DBMS_CRYPTO-Verschlüsselungsalgorithmus.

      Informationen zu den kryptografischen Funktionen und Prozeduren für 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 DBMS_CRYPTO-Verschlüsselungsalgorithmen 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. Melden Sie sich bei Ihrer Autonomous Database-Instanz an.

    Weitere Informationen finden Sie unter Verbindung zu Autonomous Database herstellen.

  2. Speichern Sie die Zugangsdaten für den Cloudobjektspeicher mit DBMS_CLOUD.CREATE_CREDENTIAL.

    Beispiele:

    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 Oracle Cloud Infrastructure Object Storage ist nicht erforderlich, wenn Sie Ressourcen-Principal-Zugangsdaten aktivieren. Weitere Informationen finden Sie unter Resource Principal für den Zugriff auf Oracle Cloud Infrastructure-Ressourcen verwenden.

  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.

    Beispiele:

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

    Alternativ können Sie Zugangsdaten zum Speichern des Schlüssels in einem Vault erstellen. Beispiele:

    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, mit dem die Tabellendaten verschlüsselt werden sollen. Der Wert credential_name ist Zugangsdaten, die das Secret (Verschlüsselungsschlüssel) angeben.

    Beispiele:

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

    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 EXPORT_DATA-Prozedur und DBMS_CLOUD-Packageformatoptionen für EXPORT_DATA.

Wenn Sie Dateien mit DBMS_CLOUD.EXPORT_DATA verschlüsseln und DBMS_CRYPTO-Verschlüsselungsalgorithmen zum Verschlüsseln der Dateien verwenden, stehen Ihnen folgende Optionen zum Verwenden oder Importieren der exportierten Dateien zur Verfügung:

  • 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 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 in den Zugangsdaten in Autonomous Database als VARCHAR2 gespeichert wird, DBMS_CRYPTO jedoch den Typ RAW für den Schlüsselparameter verwendet.

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

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. Melden Sie sich bei Ihrer Autonomous Database-Instanz an.

    Weitere Informationen finden Sie unter Verbindung zu Autonomous Database herstellen.

  2. Speichern Sie die Zugangsdaten für den Cloudobjektspeicher mit DBMS_CLOUD.CREATE_CREDENTIAL.

    Beispiele:

    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 Oracle Cloud Infrastructure Object Storage ist nicht erforderlich, wenn Sie Ressourcen-Principal-Zugangsdaten aktivieren. Weitere Informationen finden Sie unter Resource Principal für den Zugriff auf Oracle Cloud Infrastructure-Ressourcen verwenden.

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

    Beispiele:

    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 einer 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-Betriebshinweise.
  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.

    Beispiele:

    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 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 EXPORT_DATA-Prozedur und DBMS_CLOUD-Packageformatoptionen für EXPORT_DATA.