Décryptage des données lors de l'import à partir d'Object Storage
Vous pouvez décrypter et charger des données à partir de fichiers cryptés stockés dans Object Storage. Vous pouvez également décrypter les données cryptées sur Object Storage que vous utilisez dans une table externe.
Cette option est utile lors de la migration d'une base de données sur site vers une base de données Autonomous AI si les données de vos fichiers source sont cryptées.
Remarque : cette option est uniquement prise en charge pour les fichiers Object Storage 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 n'est applicable qu'aux fichiers Object Storage. -
DBMS_CLOUD.COPY_COLLECTION
Déchiffrer et charger des données à l'aide des algorithmes DBMS_CRYPTO
Affiche les étapes permettant de décrypter des fichiers cryptés à partir d'Object Storage et de charger les données dans une table de la base de données Autonomous AI (l'étape de décryptage utilise des algorithmes DBMS_CRYPTO).
Vous devez au préalable disposer de fichiers cryptés et les télécharger vers Object Storage. Cet exemple utilise un fichier CSV. Il est supposé que le fichier est crypté à l'aide de l'algorithme DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 et téléchargé vers le stockage d'objet cloud.
Pour plus d'informations sur la fonction ENCRYPT, reportez-vous à Fonction ENCRYPT.
Pour plus d'informations sur la génération d'une clé de cryptage, reportez-vous à Notes opérationnelles DBMS_CRYPTO.
Pour déchiffrer et charger des données dans une table existante sur la base de données Autonomous AI à partir d'Object Storage, procédez comme suit :
-
Connectez-vous à votre instance Autonomous AI Database.
-
Stockez vos informations d'identification au stockage d'objet cloud à l'aide de la procédure
DBMS_CLOUD.CREATE_CREDENTIALExemple :
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OBJ_STORE_CRED', username => 'user1@example.com', password => 'password' ); END; /Les valeurs fournies pour
usernameetpassworddépendent du service Cloud Object Storage que vous utilisez .Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.
-
Créez des informations d'identification pour stocker la clé à l'aide de
DBMS_CLOUD.CREATE_CREDENTIAL. Exemple :BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'ENC_CRED_NAME', username => '*Any_username*', password => 'password' ); END; /Vous pouvez également créer des informations d'identification pour stocker la clé dans un coffre. 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; /Remarque : le paramètre
usernameque vous indiquez dans les informations d'identification qui stockent la clé peut être n'importe quelle chaîne.Cette opération crée les informations d'identification
ENC_CRED_NAME, qui sont des informations d'identification de clé secrète de coffre, dans lesquelles la clé secrète (clé de décryptage/cryptage) est stockée en tant que clé secrète dans Oracle Cloud Infrastructure Vault.Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.
-
Exécutez
DBMS_CLOUD.COPY_DATAet indiquez l'algorithme de cryptageDBMS_CRYPTOen tant que méthode de décryptage.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; /Le fichier
ENCRYPTED.CSVest ainsi déchiffré dans Object Storage. Les données sont ensuite chargées dans la tableCSV_COPY_DATA. La valeur de l'optionencryptiondu paramètreformatindique un algorithme de cryptageDBMS_CRYPTOà utiliser pour décrypter les données.Pour plus d'informations sur les algorithmes de cryptage, reportez-vous à Algorithmes DBMS_CRYPTO.
Dans cet exemple,
*namespace-string*est l'espace de noms Oracle Cloud Infrastructure Object Storage etbucketnameest le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.Pour obtenir des informations détaillées sur les paramètres, reportez-vous à la procédure COPY_DATA.
Pour plus d'informations sur les paramètres
formatdisponibles, vous pouvez les utiliser avecDBMS_CLOUD.COPY_DATA. Reportez-vous à Options de format de package DBMS_CLOUD.
Déchiffrer et charger des données avec une fonction définie par l'utilisateur
Affiche les étapes permettant de décrypter des fichiers dans Object Storage et de charger les données dans des tables à l'aide d'une fonction de décryptage définie par l'utilisateur.
Pour effectuer ces étapes, vous devez au préalable disposer de fichiers cryptés et les télécharger vers Object Storage. Cet exemple utilise un fichier CSV. Il est supposé que le fichier est crypté à l'aide de l'algorithme DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 et téléchargé vers le stockage d'objet cloud.
Pour plus d'informations sur la fonction ENCRYPT, reportez-vous à Fonction ENCRYPT.
Pour plus d'informations sur la génération d'une clé de cryptage, reportez-vous à Notes opérationnelles DBMS_CRYPTO.
Pour déchiffrer et charger des données dans une table existante sur la base de données Autonomous AI à partir d'Object Storage, procédez comme suit :
-
Connectez-vous à votre instance Autonomous AI Database.
-
Stockez vos informations d'identification de stockage d'objet cloud à l'aide de la procédure
DBMS_CLOUD.CREATE_CREDENTIAL,Exemple :
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OBJ_STORE_CRED', username => 'user1@example.com', password => 'password' ); END; /Les valeurs fournies pour
usernameetpassworddépendent du service Cloud Object Storage que vous utilisez .Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.
-
Créez une fonction de rappel de décryptage de fonction définie par l'utilisateur.
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; /La fonction de décryptage
DECRYPTION_FUNCest ainsi créée. Cette fonction déchiffre les données à l'aide d'un cryptage 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 est extraite dynamiquement en effectuant un appel REST vers le service Oracle Cloud Infrastructure Vault. -
Exécutez
DBMS_CLOUD.COPY_DATA, indiquez l'optionformatencryptionet indiquez la fonction définie par l'utilisateur que vous avez créée pour décrypter 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; /Le fichier
ENCRYPTED.CSVest ainsi déchiffré dans Object Storage. Les données sont ensuite chargées dans la tableCSV_COPY_DATA. La valeur de l'optionencryptiondu paramètreformatindique un nom de fonction défini par l'utilisateur à utiliser pour décrypter les données.Remarque : vous devez disposer du privilège
EXECUTEsur la fonction définie par l'utilisateur.Dans cet exemple,
namespace-stringest l'espace de noms Oracle Cloud Infrastructure Object Storage etbucketnameest le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.Pour obtenir des informations détaillées sur les paramètres, reportez-vous à la procédure COPY_DATA.
Pour plus d'informations sur les paramètres
formatdisponibles, vous pouvez utiliserDBMS_CLOUD.COPY_DATA, reportez-vous à Options de format de package DBMS_CLOUD.