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 :

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 :

  1. Connectez-vous à votre instance de base de données Autonomous AI Database.

  2. 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 username et password dépendent du service de stockage d'objets en nuage que vous utilisez .

    Pour plus d'informations, voir Procédure CREATE_CREDENTIAL.

  3. 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 username que 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.

  4. Exécutez DBMS_CLOUD.COPY_DATA et spécifiez l'algorithme de chiffrement DBMS_CRYPTO comme 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.CSV dans le stockage d'objets. Les données sont ensuite chargées dans la table CSV_COPY_DATA. La valeur de l'option encryption du paramètre format spécifie un algorithme de chiffrement DBMS_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 et bucketname est 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 format disponibles, vous pouvez les utiliser avec DBMS_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 :

  1. Connectez-vous à votre instance de base de données Autonomous AI Database.

  2. 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 username et password dépendent du service de stockage d'objets en nuage que vous utilisez .

    Pour plus d'informations, voir Procédure CREATE_CREDENTIAL.

  3. 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.

  4. Exécutez DBMS_CLOUD.COPY_DATA et spécifiez l'option format encryption et 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.CSV dans le stockage d'objets. Les données sont ensuite chargées dans la table CSV_COPY_DATA. La valeur de l'option encryption du paramètre format spécifie un nom de fonction défini par l'utilisateur à utiliser pour déchiffrer les données.

    Note : Vous devez disposer du privilège EXECUTE sur la fonction définie par l'utilisateur.

    Dans cet exemple, namespace-string est l'espace de noms du stockage d'objets pour Oracle Cloud Infrastructure et bucketname est 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 format disponibles, vous pouvez les utiliser avec DBMS_CLOUD.COPY_DATA, voir Options de format d'ensemble DBMS_CLOUD.