Chiffrer les données lors de l'exportation vers le stockage d'objets

Vous pouvez ainsi chiffrer les données des tables lors de l'exportation vers le service de stockage d'objets.

Utilisez le paramètre format et l'option encryption avec DBMS_CLOUD.EXPORT_DATA pour chiffrer les données lorsque vous exportez de la base de données du service d'intelligence artificielle autonome vers le stockage d'objets.

Notez les points suivants lorsque vous exportez des données chiffrées vers le service de stockage d'objets :

  • L'option encryption n'est prise en charge que lors de l'exportation de données d'une base de données d'intelligence artificielle autonome vers le stockage d'objets au format CSV, JSON ou XML.

  • Lorsque l'exportation inclut à la fois le chiffrement et la compression, l'ordre des opérations est le suivant : d'abord les données sont compressées, ensuite les données sont chiffrées, puis elles sont chargées dans le stockage d'objets.

  • Il existe deux méthodes de chiffrement prises en charge :

    • Utilisation d'une fonction définie par l'utilisateur.

    • Utilisation d'un algorithme de chiffrement spécifié par DBMS_CRYPTO.

      Voir DBMS_CRYPTO pour plus d'informations sur les fonctions et procédures cryptographiques pour le chiffrement et le déchiffrement.

Rubriques

Chiffrer les données à l'aide des algorithmes de chiffrement DBMS_CRYPTO

Affiche les étapes de chiffrement des données à l'aide d'algorithmes de chiffrement DBMS_CRYPTO lors de l'exportation vers le service de stockage d'objets en nuage.

Exécutez les étapes suivantes pour chiffrer les données lors de l'exportation vers le service de stockage d'objets en nuage (cet exemple exporte les données de table vers un fichier CSV) :

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

    Pour plus d'informations, voir Se connecter à Autonomous AI Database.

  2. Stockez vos données d'identification du service de stockage d'objets en nuage à l'aide de DBMS_CLOUD.CREATE_CREDENTIAL.

    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édureCREATE_CREDENTIAL.

    La création de données d'identification pour accéder au magasin d'objets Oracle Cloud Infrastructure n'est pas requise si vous activez les données d'identification du principal de ressource. Pour plus d'informations, voir Utiliser un principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure.

  3. Créez des données d'identification pour stocker la clé de chiffrement (la clé de chiffrement à utiliser pour chiffrer les données).

    Lorsque vous chiffrez des données à l'aide d'algorithmes de chiffrement DBMS_CRYPTO, vous stockez la clé de chiffrement dans des données d'identification. La clé est spécifiée dans le champ password dans des données d'identification que vous créez avec 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 données d'identification pour stocker la clé dans une chambre forte. 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édureCREATE_CREDENTIAL.

  4. Exécutez DBMS_CLOUD.EXPORT_DATA.

    Utilisez le paramètre format avec l'option encryption. Le type encryption spécifie l'algorithme de chiffrement DBMS_CRYPTO à utiliser pour chiffrer les données de la table et la valeur credential_name est des données d'identification qui spécifient la clé secrète (clé de chiffrement).

    Exemple :

    BEGIN
        DBMS_CLOUD.EXPORT_DATA (
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/encrypted.csv',
            query           => 'SELECT * FROM ADMIN.employees',
            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 chiffre et exporte les données de la table EMPLOYEES dans un fichier CSV.

    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 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 plus d'informations, voir Procédure EXPORT_DATA et Options de format d'ensemble DBMS_CLOUD pour EXPORT_DATA.

Après avoir chiffré les fichiers avec DBMS_CLOUD.EXPORT_DATA, lorsque vous utilisez des algorithmes de chiffrement DBMS_CRYPTO pour chiffrer les fichiers, vous disposez des options suivantes pour utiliser ou importer les fichiers que vous avez exportés :

  • Vous pouvez utiliser DBMS_CLOUD.COPY_DATA ou DBMS_CLOUD.COPY_COLLECTION avec les mêmes options d'algorithme de chiffrement et la même clé pour déchiffrer les fichiers.

    Pour plus d'informations, voir Déchiffrer et charger des données à l'aide des algorithmes DBMS_CRYPTO.

  • Vous pouvez interroger les données d'une table externe en fournissant les mêmes options d'algorithme de chiffrement et la même clé pour déchiffrer les fichiers, avec l'une des procédures suivantes :

    • DBMS_CLOUD.CREATE_EXTERNAL_TABLE

    • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE

    • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE

      Pour DBMS_CLOUD.CREATE_HYBRID_PART_TABLE, cette option s'applique uniquement aux fichiers de stockage d'objets.

    Pour plus d'informations, voir Déchiffrer et charger des données à l'aide des algorithmes DBMS_CRYPTO.

  • Sur un système qui n'est pas une base de données d'IA autonome, vous pouvez utiliser l'ensemble DBMS_CRYPTO avec les mêmes options d'algorithme et la clé pour déchiffrer les fichiers.

    Notez que la clé est stockée en tant que VARCHAR2 dans les données d'identification de la base de données d'intelligence artificielle autonome, mais que DBMS_CRYPTO utilise le type RAW pour le paramètre de clé.

    Pour plus d'informations sur les algorithmes de chiffrement, voir Algorithmes DBMS_CRYPTO.

Chiffrer les données à l'aide d'une fonction de chiffrement définie par l'utilisateur

Affiche les étapes de chiffrement des données à l'aide d'une fonction de chiffrement définie par l'utilisateur lors de l'exportation vers le service de stockage d'objets en nuage.

Exécutez les étapes suivantes pour chiffrer les données lors de l'exportation vers le service de stockage d'objets en nuage (cet exemple exporte les données de table vers un fichier CSV) :

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

    Pour plus d'informations, voir Se connecter à Autonomous AI Database.

  2. Stockez vos données d'identification du service de stockage d'objets en nuage à l'aide de DBMS_CLOUD.CREATE_CREDENTIAL.

    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édureCREATE_CREDENTIAL.

    La création de données d'identification pour accéder au magasin d'objets Oracle Cloud Infrastructure n'est pas requise si vous activez les données d'identification du principal de ressource. Pour plus d'informations, voir Utiliser un principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure.

  3. Créez une fonction de rappel définie par l'utilisateur pour chiffrer les données.

    Exemple :

    CREATE OR REPLACE FUNCTION encryption_func (data IN BLOB)
      RETURN BLOB
      IS
          l_encrypted_data BLOB;
           BEGIN   
         DBMS_LOB.CREATETEMPORARY (l_encrypted_data, TRUE, DBMS_LOB.CALL);
         DBMS_CRYPTO.ENCRYPT (
             dst => l_encrypted_data,
             src => data,
             typ => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,
             key => 'encryption key'
          );
         RETURN l_encrypted_data;
    END encryption_func;
    /

    Cela crée la fonction de chiffrement ENCRYPTION_FUNC. Cette fonction chiffre les données à l'aide d'un chiffrement de flux ou de bloc avec une clé fournie par l'utilisateur.

    Note

    Vous devez créer une clé de chiffrement à utiliser comme valeur dans le paramètre KEY. Voir Notes opérationnellesDBMS_CRYPTO pour plus d'informations sur la génération de la clé de chiffrement.
  4. Exécutez DBMS_CLOUD.EXPORT_DATA avec le paramètre format, incluez l'option encryption et spécifiez une valeur user_defined_function.

    Exemple :

    BEGIN
          DBMS_CLOUD.EXPORT_DATA (
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/encrypted.csv',
            query           => 'SELECT * FROM ADMIN.emp',
            format          => json_object( 
                                  'type' value 'csv', 
                                  'encryption' value json_object('user_defined_function' value 'admin.encryption_func'))
          );
    END;
    /

    Cela chiffre les données de l'interrogation spécifiée sur la table EMP et exporte les données sous forme de fichier CSV sur le stockage d'objets en nuage. Le paramètre format avec la valeur encryption spécifie la fonction de chiffrement définie par l'utilisateur à utiliser pour chiffrer les données.

    Note

    Vous devez disposer du privilège EXECUTE sur la fonction de chiffrement.

    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 plus d'informations, voir Procédure EXPORT_DATA et Options de format d'ensemble DBMS_CLOUD pour EXPORT_DATA.