Daten beim Import aus Object Storage entschlüsseln

Sie können Daten aus verschlüsselten Dateien entschlüsseln und laden, die in Object Storage gespeichert sind. Sie können auch verschlüsselte Daten in Object Storage entschlüsseln, die Sie in einer externen Tabelle verwenden.

Diese Option ist bei der Migration von einer On-Premise-Datenbank zu einer Autonomous Database nützlich, wenn die Daten in den Quelldateien verschlüsselt sind.

Hinweis:

Diese Option wird nur für Object Storage-Dateien unter 4 GB unterstützt.

Diese Option gilt für die folgenden Verfahren:

  • DBMS_CLOUD.COPY_DATA

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

  • DBMS_CLOUD.COPY_COLLECTION

Daten mit DBMS_CRYPTO-Algorithmen entschlüsseln und laden

Zeigt die Schritte zum Entschlüsseln verschlüsselter Dateien aus Object Storage und zum Laden der Daten in eine Tabelle in Autonomous Database an (der Entschlüsselungsschritt verwendet DBMS_CRYPTO-Algorithmen).

Voraussetzung ist, dass Sie über verschlüsselte Dateien verfügen und die Dateien in Object Storage hochladen. In diesem Beispiel wird eine CSV-Datei verwendet. Es wird davon ausgegangen, dass die Datei mit dem Algorithmus DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 verschlüsselt und in den Cloud-Objektspeicher hochgeladen wird.

Weitere Informationen zur Funktion ENCRYPT finden Sie unter ENCRYPT-Funktion.

Weitere Informationen zum Generieren eines Verschlüsselungsschlüssels finden Sie unter DBMS_CRYPTO Operational Notes.

So entschlüsseln und laden Sie Daten aus Object Storage in eine vorhandene Tabelle in Autonomous Database:

  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 Schlüssel mit DBMS_CLOUD.CREATE_CREDENTIAL zu speichern. 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 wird, 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 im Oracle Cloud Infrastructure Vault gespeichert wird.

    Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

  4. Führen Sie DBMS_CLOUD.COPY_DATA aus, und geben Sie den Verschlüsselungsalgorithmus DBMS_CRYPTO als Entschlüsselungsmethode an.
    BEGIN
     DBMS_CLOUD.COPY_DATA (
       table_name       => 'CSV_COPY_DATA',
       credential_name  => 'OBJ_STORE_CRED',
       file_uri_list    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-string/b/bucketname/o/encrypted.csv',
       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 wird die Datei ENCRYPTED.CSV im Object Storage entschlüsselt. Die Daten werden dann in die Tabelle CSV_COPY_DATA geladen. Der Optionswert encryption des format-Parameters gibt einen DBMS_CRYPTO-Verschlüsselungsalgorithmus an, mit dem Daten entschlüsselt werden sollen.

    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 zu den Parametern finden Sie unter Prozedur COPY_DATA.

    Ausführliche Informationen zu den verfügbaren format-Parametern finden Sie in DBMS_CLOUD.COPY_DATA. Informationen hierzu finden Sie unter .

Daten mit einer benutzerdefinierten Funktion entschlüsseln und laden

Zeigt die Schritte zum Entschlüsseln von Dateien in Object Storage und zum Laden der Daten in Tabellen mit einer benutzerdefinierten Entschlüsselungsfunktion an.

Als Voraussetzung für diese Schritte müssen Sie über verschlüsselte Dateien verfügen und die Dateien in Object Storage hochladen. In diesem Beispiel wird eine CSV-Datei verwendet. Es wird davon ausgegangen, dass die Datei mit dem Algorithmus DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 verschlüsselt und in den Cloud-Objektspeicher hochgeladen wird.

Weitere Informationen zur Funktion ENCRYPT finden Sie unter ENCRYPT-Funktion.

Weitere Informationen zum Generieren eines Verschlüsselungsschlüssels finden Sie unter DBMS_CRYPTO Operational Notes.

So entschlüsseln und laden Sie Daten aus Object Storage in eine vorhandene Tabelle in Autonomous Database:

  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 Entschlüsselungs-Callback-Funktion.

    Beispiel:

    CREATE OR REPLACE FUNCTION decryption_func(data IN BLOB)
    RETURN BLOB
    IS
      l_decrypted_data BLOB;
    BEGIN
      DBMS_LOB.createtemporary(l_decrypted_data, TRUE, DBMS_LOB.CALL);
      DBMS_CRYPTO.decrypt(
          dst => l_decrypted_data,
          src => data,
          typ => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,
          key => 'encryption key'
        );
      RETURN l_decrypted_data;
    END decryption_callback;
    /

    Dadurch wird die Entschlüsselungsfunktion DECRYPTION_FUNC erstellt. Diese Funktion entschlüsselt Daten mit einer Stream- oder Block-Cipher mit einem vom Benutzer angegebenen Schlüssel. Der vom Benutzer angegebene Schlüssel in diesem Beispiel wird in Oracle Cloud Infrastructure Vault gespeichert und durch einen REST-Aufruf an den Oracle Cloud Infrastructure Vault-Service dynamisch abgerufen.

  4. Führen Sie DBMS_CLOUD.COPY_DATA aus, geben Sie die Option format encryption an, und geben Sie die benutzerdefinierte Funktion an, die Sie zum Entschlüsseln der Daten erstellt haben.
    BEGIN
     DBMS_CLOUD.COPY_DATA (
        table_name      => 'CSV_COPY_DATA',
        credential_name => 'OBJ_STORE_CRED',
        file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-string/b/bucketname/o/encrypted.csv',
        format          => json_object(
                             'type' value 'csv',
                             'encryption' value json_object('user_defined_function' value 'admin.decryption_func'))
      );
    end;
    /

    Dadurch wird die Datei ENCRYPTED.CSV im Object Storage entschlüsselt. Die Daten werden dann in die Tabelle CSV_COPY_DATA geladen. Der Optionswert encryption des format-Parameters gibt einen benutzerdefinierten Funktionsnamen an, der zum Entschlüsseln von Daten verwendet werden soll.

    Hinweis:

    Sie benötigen die Berechtigung EXECUTE für die benutzerdefinierte Funktion.

    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 zu den Parametern finden Sie unter Prozedur COPY_DATA.

    Ausführliche Informationen zu den verfügbaren format-Parametern finden Sie unter DBMS_CLOUD.COPY_DATA. Informationen hierzu finden Sie unter DBMS_CLOUD-Paketformatoptionen.