Déchiffrer les données lors de l'importation à partir du stockage d'objets
Vous pouvez déchiffrer et charger des données à partir de fichiers chiffrés stockés dans le service de stockage d'objets. Vous pouvez également déchiffrer des données chiffrées dans le service de stockage d'objets que vous utilisez dans une table externe.
Cette option est utile lors de la migration d'une base de données sur place vers une base de données d'IA autonome si les données de vos fichiers sources sont chiffrées.
Note : Cette option n'est prise en charge que pour les fichiers de stockage d'objets de moins de 4 Go.
Cette option s'applique aux procédures suivantes :
-
DBMS_CLOUD.COPY_DATA -
DBMS_CLOUD.CREATE_EXTERNAL_TABLE -
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE -
DBMS_CLOUD.CREATE_HYBRID_PART_TABLEPour
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE, cette option s'applique uniquement aux fichiers de stockage d'objets. -
DBMS_CLOUD.COPY_COLLECTION
Déchiffrer et charger des données à l'aide des algorithmes DBMS_CRYPTO
Affiche les étapes de déchiffrement des fichiers chiffrés à partir du stockage d'objets et de chargement des données dans une table de la base de données d'IA autonome (l'étape de déchiffrement utilise des algorithmes DBMS_CRYPTO).
Vous devez au préalable avoir chiffré les fichiers et les charger dans le stockage d'objets. Cet exemple utilise un fichier CSV et il est supposé que le fichier est chiffré à l'aide de l'algorithme DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 et chargé dans votre stockage d'objets en nuage.
Voir Fonction ENCRYPT pour plus d'informations sur la fonction ENCRYPT.
Voir Notes d'exploitation DBMS_CRYPTO pour plus d'informations sur la génération d'une clé de chiffrement.
Pour déchiffrer et charger des données dans une table existante sur Autonomous AI Database à partir du stockage d'objets :
-
Connectez-vous à votre instance de base de données Autonomous AI Database.
-
Stockez vos données d'identification pour le service de stockage d'objets en nuage à l'aide de
DBMS_CLOUD.CREATE_CREDENTIAL.Par exemple :
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OBJ_STORE_CRED', username => 'user1@example.com', password => 'password' ); END; /Les valeurs que vous indiquez pour
usernameetpassworddépendent du service de stockage d'objets en nuage que vous utilisez .Pour plus d'informations, voir Procédure CREATE_CREDENTIAL.
-
Créez des données d'identification pour stocker la clé à l'aide de
DBMS_CLOUD.CREATE_CREDENTIAL. Par exemple :BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'ENC_CRED_NAME', username => '*Any_username*', password => 'password' ); END; /Vous pouvez également créer des données d'identification pour stocker la clé dans une chambre forte. Par exemple :
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; /Note : Le paramètre
usernameque vous spécifiez dans les données d'identification qui stockent la clé peut être n'importe quelle chaîne.Cela crée les données d'identification
ENC_CRED_NAME, qui sont des données d'identification de clé secrète de chambre forte, où la clé secrète (clé de déchiffrement/chiffrement) est stockée en tant que clé secrète dans Oracle Cloud Infrastructure Vault.Pour plus d'informations, voir Procédure CREATE_CREDENTIAL.
-
Exécutez
DBMS_CLOUD.COPY_DATAet spécifiez l'algorithme de chiffrementDBMS_CRYPTOcomme méthode de déchiffrement.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; /Cela déchiffre le fichier
ENCRYPTED.CSVdans le stockage d'objets. Les données sont ensuite chargées dans la tableCSV_COPY_DATA. La valeur de l'optionencryptiondu paramètreformatspécifie un algorithme de chiffrementDBMS_CRYPTOà utiliser pour déchiffrer les données.Pour plus d'informations sur les algorithmes de chiffrement, voir Algorithmes DBMS_CRYPTO.
Dans cet exemple,
*namespace-string*est l'espace de noms du stockage d'objets Oracle Cloud Infrastructure etbucketnameest le nom du seau. Pour plus d'informations, voir Présentation des espaces de noms du stockage d'objets.Pour des informations détaillées sur les paramètres, voir Procédure COPY_DATA.
Pour des informations détaillées sur les paramètres
formatdisponibles, vous pouvez les utiliser avecDBMS_CLOUD.COPY_DATA, voir Options de format d'ensemble DBMS_CLOUD.
Déchiffrer et charger des données à l'aide d'une fonction définie par l'utilisateur
Affiche les étapes de déchiffrement des fichiers dans le stockage d'objets et de chargement des données dans des tables à l'aide d'une fonction de déchiffrement définie par l'utilisateur.
Pour ces étapes, vous devez disposer de fichiers chiffrés et les charger dans le stockage d'objets. Cet exemple utilise un fichier CSV et il est supposé que le fichier est chiffré à l'aide de l'algorithme DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 et chargé dans votre stockage d'objets en nuage.
Voir Fonction ENCRYPT pour plus d'informations sur la fonction ENCRYPT.
Voir Notes d'exploitation DBMS_CRYPTO pour plus d'informations sur la génération d'une clé de chiffrement.
Pour déchiffrer et charger des données dans une table existante sur Autonomous AI Database à partir du stockage d'objets :
-
Connectez-vous à votre instance de base de données Autonomous AI Database.
-
Stockez vos données d'identification pour le service de stockage d'objets en nuage à l'aide de
DBMS_CLOUD.CREATE_CREDENTIAL.Par exemple :
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OBJ_STORE_CRED', username => 'user1@example.com', password => 'password' ); END; /Les valeurs que vous indiquez pour
usernameetpassworddépendent du service de stockage d'objets en nuage que vous utilisez .Pour plus d'informations, voir Procédure CREATE_CREDENTIAL.
-
Créer une fonction de rappel de déchiffrement de fonction définie par l'utilisateur.
Par exemple :
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; /Cela crée la fonction de déchiffrement
DECRYPTION_FUNC. Cette fonction déchiffre les données à l'aide d'un chiffrement de flux ou de bloc avec une clé fournie par l'utilisateur. La clé fournie par l'utilisateur dans l'exemple est stockée dans Oracle Cloud Infrastructure Vault et extraite dynamiquement en effectuant un appel REST au service Oracle Cloud Infrastructure Vault. -
Exécutez
DBMS_CLOUD.COPY_DATAet spécifiez l'optionformatencryptionet spécifiez la fonction définie par l'utilisateur que vous avez créée pour déchiffrer les données.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; /Cela déchiffre le fichier
ENCRYPTED.CSVdans le stockage d'objets. Les données sont ensuite chargées dans la tableCSV_COPY_DATA. La valeur de l'optionencryptiondu paramètreformatspécifie un nom de fonction défini par l'utilisateur à utiliser pour déchiffrer les données.Note : Vous devez disposer du privilège
EXECUTEsur la fonction définie par l'utilisateur.Dans cet exemple,
namespace-stringest l'espace de noms du stockage d'objets pour Oracle Cloud Infrastructure etbucketnameest le nom du seau. Pour plus d'informations, voir Présentation des espaces de noms du stockage d'objets.Pour des informations détaillées sur les paramètres, voir Procédure COPY_DATA.
Pour des informations détaillées sur les paramètres
formatdisponibles, vous pouvez les utiliser avecDBMS_CLOUD.COPY_DATA, voir Options de format d'ensemble DBMS_CLOUD.