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:
-
DBMS_CLOUD.COPY_DATA -
DBMS_CLOUD.CREATE_EXTERNAL_TABLE -
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE -
DBMS_CLOUD.CREATE_HYBRID_PART_TABLEFür
DBMS_CLOUD.CREATE_HYBRID_PART_TABLEgilt 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 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:
-
Stellen Sie eine Verbindung zur autonomen KI-Datenbankinstanz her.
-
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
usernameundpasswordangeben, hängen vom verwendeten Cloud-Objektspeicherservice ab.Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.
-
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_NAMEerstellt, 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.
-
Führen Sie
DBMS_CLOUD.COPY_DATAaus, und geben Sie den VerschlüsselungsalgorithmusDBMS_CRYPTOals 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.CSVim Object Storage entschlüsselt. Die Daten werden dann in die TabelleCSV_COPY_DATAgeladen. Der Wert der Optionencryptiondes Parametersformatgibt einen VerschlüsselungsalgorithmusDBMS_CRYPTOan, 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 undbucketnameder 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 mitDBMS_CLOUD.COPY_DATAverwenden 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:
-
Stellen Sie eine Verbindung zur autonomen KI-Datenbankinstanz her.
-
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
usernameundpasswordangeben, hängen vom verwendeten Cloud-Objektspeicherservice ab.Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.
-
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_FUNCerstellt. 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. -
Führen Sie
DBMS_CLOUD.COPY_DATAaus, und geben Sie die Optionformatencryptionan. 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.CSVim Object Storage entschlüsselt. Die Daten werden dann in die TabelleCSV_COPY_DATAgeladen. Der Wert der Optionencryptiondes Parametersformatgibt einen benutzerdefinierten Funktionsnamen an, mit dem Daten entschlüsselt werden.Hinweis: Sie benötigen die Berechtigung
EXECUTEfür die benutzerdefinierte Funktion.In diesem Beispiel ist
namespace-stringder Oracle Cloud Infrastructure-Objektspeicher-Namespace undbucketnameder 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 mitDBMS_CLOUD.COPY_DATAverwenden können, finden Sie unter Optionen für DBMS_CLOUD-Packageformat.