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

Vous pouvez chiffrer les données d'une table lors de l'exportation vers le stockage d'objets.

Utilisez le paramètre format et l'option encryption avec DBMS_CLOUD.EXPORT_DATA pour chiffrer les données lors de l'exportation d'Autonomous Database vers le stockage d'objets.

Notez ce qui suit lorsque vous exportez des données chiffrées vers le stockage d'objets :

  • L'option encryption n'est prise en charge que lors de l'exportation de données d'Autonomous Database 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 et ensuite 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.

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 stockage d'objets en nuage.

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

  1. Connectez-vous à votre instance de base de données autonome.
  2. Stockez vos données d'identification du 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é de chiffrement (clé à 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 les données d'identification que vous créez avec DBMS_CLOUD.CREATE_CREDENTIAL.

    Par exemple :

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name => 'ENC_CRED_NAME',
        username        => 'Any_username',
        password        => 'password'
      );
    END;
    /
  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).

    Par exemple :

    BEGIN
        DBMS_CLOUD.EXPORT_DATA (
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-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;
    /

    Cette opération chiffre et exporte les données de la table EMPLOYEES dans un fichier CSV.

    Voir Algorithmes DBMS_CRYPTO pour plus d'informations sur les algorithmes 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 de l'ensemble DBMS_CLOUD pour EXPORT_DATA.

Après avoir chiffré les fichiers à l'aide de 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 d'algorithmes DBMS_CRYPTO.

  • Vous pouvez interroger les données dans 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 d'algorithmes DBMS_CRYPTO.

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

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

    Voir Algorithmes DBMS_CRYPTO pour plus d'informations sur les algorithmes de chiffrement.

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 stockage d'objets en nuage.

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

  1. Connectez-vous à votre instance de base de données autonome.
  2. Stockez vos données d'identification du 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 une fonction de rappel définie par l'utilisateur pour chiffrer les données.

    Par 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 flux ou d'un chiffrement par blocs à l'aide d'une clé fournie par l'utilisateur.

    Note :

    Vous devez créer une clé de chiffrement à utiliser comme valeur dans le paramètre KEY. Voir DBMS_CRYPTO Notes opérationnelles 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 user_defined_function.

    Par exemple :

    BEGIN
          DBMS_CLOUD.EXPORT_DATA (
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-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;
    /

    Cette opération chiffre les données de l'interrogation spécifiée dans la table EMP et les exporte sous forme de fichier CSV dans 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 de l'ensemble DBMS_CLOUD pour EXPORT_DATA.