Decifra dati durante l'importazione dallo storage degli oggetti
Puoi decifrare e caricare i dati dai file cifrati memorizzati nello storage degli oggetti. Puoi anche decifrare i dati cifrati nello storage degli oggetti che utilizzi in una tabella esterna.
Questa opzione è utile quando si esegue la migrazione da un database in locale a un Autonomous AI Database se i dati nei file di origine vengono cifrati.
Nota: questa opzione è supportata solo per i file di storage degli oggetti di dimensioni inferiori a 4 GB.
Questa opzione è applicabile alle seguenti procedure:
-
DBMS_CLOUD.COPY_DATA -
DBMS_CLOUD.CREATE_EXTERNAL_TABLE -
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE -
DBMS_CLOUD.CREATE_HYBRID_PART_TABLEPer
DBMS_CLOUD.CREATE_HYBRID_PART_TABLEquesta opzione è applicabile solo ai file di storage degli oggetti. -
DBMS_CLOUD.COPY_COLLECTION
Decifra e carica dati mediante algoritmi DBMS_CRYPTO
Mostra i passi per decifrare i file cifrati dallo storage degli oggetti e caricare i dati in una tabella di Autonomous AI Database (il passo di decifrazione utilizza algoritmi DBMS_CRYPTO).
Come prerequisito è necessario disporre di file cifrati e caricare i file nello storage degli oggetti. Questo esempio utilizza un file CSV e si presume che il file venga cifrato utilizzando l'algoritmo DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 e caricato nello storage degli oggetti cloud.
Per ulteriori informazioni sulla funzione ENCRYPT, vedere Funzione ENCRYPT.
Per ulteriori informazioni sulla generazione di una chiave di cifratura, vedere DBMS_CRYPTO Operational Notes.
Per decifrare e caricare i dati in una tabella esistente in Autonomous AI Database dallo storage degli oggetti, effettuare le operazioni riportate di seguito.
-
Connettersi all'istanza di Autonomous AI Database.
-
Memorizzare le credenziali dello storage degli oggetti cloud utilizzando
DBMS_CLOUD.CREATE_CREDENTIAL.Ad esempio:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OBJ_STORE_CRED', username => 'user1@example.com', password => 'password' ); END; /I valori forniti per
usernameepassworddipendono dal servizio di storage degli oggetti cloud in uso.Per ulteriori informazioni, vedere Procedura CREDENTIAL.
-
Creare una credenziale per memorizzare la chiave utilizzando
DBMS_CLOUD.CREATE_CREDENTIAL. Ad esempio:BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'ENC_CRED_NAME', username => '*Any_username*', password => 'password' ); END; /In alternativa, è possibile creare le credenziali per memorizzare la chiave in un vault. Ad esempio:
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; /Nota: il parametro
usernamespecificato nella credenziale che memorizza la chiave può essere qualsiasi stringa.In questo modo viene creata la credenziale
ENC_CRED_NAME, che è una credenziale segreta del vault, in cui il segreto (chiave di decifrazione/cifratura) viene memorizzato come segreto in Oracle Cloud Infrastructure Vault.Per ulteriori informazioni, vedere Procedura CREDENTIAL.
-
Eseguire
DBMS_CLOUD.COPY_DATAe specificare l'algoritmo di cifraturaDBMS_CRYPTOcome metodo di decifrazione.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; /Questa operazione decifra il file
ENCRYPTED.CSVnello storage degli oggetti. I dati vengono quindi caricati nella tabellaCSV_COPY_DATA. Il valore dell'opzioneencryptiondel parametroformatspecifica un algoritmo di cifraturaDBMS_CRYPTOda utilizzare per decifrare i dati.Per ulteriori informazioni sugli algoritmi di cifratura, vedere Algoritmi DBMS_CRYPTO.
In questo esempio,
*namespace-string*è lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure ebucketnameè il nome del bucket. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.Per informazioni dettagliate sui parametri, vedere Procedura COPY_DATA.
Per informazioni dettagliate sui parametri
formatdisponibili, è possibile utilizzareDBMS_CLOUD.COPY_DATA, vedere DBMS_CLOUD Package Format Options.
Decifra e carica dati con una funzione definita dall'utente
Mostra i passi per decifrare i file nello storage degli oggetti e caricare i dati nelle tabelle utilizzando una funzione di decifrazione definita dall'utente.
Come prerequisito per questi passi, è necessario disporre di file cifrati e caricare i file nello storage degli oggetti. Questo esempio utilizza un file CSV e si presume che il file venga cifrato utilizzando l'algoritmo DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 e caricato nello storage degli oggetti cloud.
Per ulteriori informazioni sulla funzione ENCRYPT, vedere Funzione ENCRYPT.
Per ulteriori informazioni sulla generazione di una chiave di cifratura, vedere DBMS_CRYPTO Operational Notes.
Per decifrare e caricare i dati in una tabella esistente in Autonomous AI Database dallo storage degli oggetti, effettuare le operazioni riportate di seguito.
-
Connettersi all'istanza di Autonomous AI Database.
-
Memorizzare le credenziali dello storage degli oggetti cloud utilizzando
DBMS_CLOUD.CREATE_CREDENTIAL.Ad esempio:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OBJ_STORE_CRED', username => 'user1@example.com', password => 'password' ); END; /I valori forniti per
usernameepassworddipendono dal servizio di storage degli oggetti cloud in uso.Per ulteriori informazioni, vedere Procedura CREDENTIAL.
-
Creare una funzione di callback di decifrazione definita dall'utente.
Ad esempio:
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; /Viene creata la funzione di decifrazione
DECRYPTION_FUNC. Questa funzione decifra i dati utilizzando una cifra di flusso o blocco con una chiave fornita dall'utente. La chiave fornita dall'utente nell'esempio viene memorizzata in Oracle Cloud Infrastructure Vault e recuperata dinamicamente effettuando una chiamata REST al servizio Oracle Cloud Infrastructure Vault. -
Eseguire
DBMS_CLOUD.COPY_DATAe specificare l'opzioneformatencryptione specificare la funzione definita dall'utente creata per decifrare i dati.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; /Questa operazione decifra il file
ENCRYPTED.CSVnello storage degli oggetti. I dati vengono quindi caricati nella tabellaCSV_COPY_DATA. Il valore dell'opzioneencryptiondel parametroformatspecifica un nome di funzione definito dall'utente da utilizzare per decifrare i dati.Nota: è necessario disporre del privilegio
EXECUTEper la funzione definita dall'utente.In questo esempio,
namespace-stringè lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure ebucketnameè il nome del bucket. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.Per informazioni dettagliate sui parametri, vedere Procedura COPY_DATA.
Per informazioni dettagliate sui parametri
formatdisponibili, è possibile utilizzareDBMS_CLOUD.COPY_DATA, vedere DBMS_CLOUD Package Format Options.