Daten beim Importieren 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 autonomen KI-Datenbank nützlich, wenn die Daten in den Quelldateien verschlüsselt sind.

Hinweis: Diese Option wird nur für Object Storage-Dateien mit weniger als 4 GB unterstützt.

Diese Option gilt für die folgenden Verfahren:

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 einer autonomen KI-Datenbank an (der Entschlüsselungsschritt verwendet DBMS_CRYPTO-Algorithmen).

Als Voraussetzung müssen Sie verschlüsselte Dateien haben und die Dateien in Object Storage hochgeladen haben. 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 Ihren Cloud Object Storage 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 einer autonomen KI-Datenbank:

  1. Stellen Sie eine Verbindung zur autonomen KI-Datenbankinstanz her.

  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.

  3. Erstellen Sie Zugangsdaten zum Speichern des Schlüssels mit DBMS_CLOUD.CREATE_CREDENTIAL. 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.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 Wert der Option encryption des Parameters format gibt einen Verschlüsselungsalgorithmus DBMS_CRYPTO an, der zum Entschlüsseln von Daten verwendet werden soll.

    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.

    Ausführliche Informationen zu den Parametern finden Sie unter COPY_DATA-Prozedur.

    Ausführliche Informationen zu den verfügbaren format-Parametern, die Sie mit DBMS_CLOUD.COPY_DATA verwenden können, finden Sie unter Optionen für DBMS_CLOUD-Packageformat.

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 verschlüsselte Dateien haben und die Dateien in Object Storage hochgeladen haben. 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 Ihren Cloud Object Storage 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 einer autonomen KI-Datenbank:

  1. Stellen Sie eine Verbindung zur autonomen KI-Datenbankinstanz her.

  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.

  3. Erstellen Sie eine benutzerdefinierte Funktion Decryption 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 einem Stream- oder Block-Cipher mit einem vom Benutzer bereitgestellten Schlüssel. Der im Beispiel angegebene Schlüssel wird in Oracle Cloud Infrastructure Vault gespeichert und dynamisch abgerufen, indem ein REST-Aufruf an den Oracle Cloud Infrastructure Vault-Service erfolgt.

  4. Führen Sie DBMS_CLOUD.COPY_DATA aus, und geben Sie die Option format encryption an. Geben Sie außerdem 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 Wert der Option encryption des Parameters format gibt einen benutzerdefinierten Funktionsnamen an, mit dem Daten entschlüsselt werden.

    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.

    Ausführliche Informationen zu den Parametern finden Sie unter COPY_DATA-Prozedur.

    Ausführliche Informationen zu den verfügbaren format-Parametern, die Sie mit DBMS_CLOUD.COPY_DATA verwenden können, finden Sie unter Optionen für DBMS_CLOUD-Packageformat.