Crypter les données lors de l'export vers Object Storage
Vous pouvez crypter les données de table lors de l'export vers Object Storage.
Utilisez le paramètre format et l'option encryption avec DBMS_CLOUD.EXPORT_DATA pour crypter les données lorsque vous exportez de la base de données Autonomous AI vers Object Storage.
Lorsque vous exportez des données cryptées vers Object Storage, tenez compte des points suivants :
-
L'option
encryptionest uniquement prise en charge lors de l'export de données d'Autonomous AI Database vers Object Storage au format CSV, JSON ou XML. -
Lorsque l'export inclut à la fois le cryptage et la compression, l'ordre des opérations est le suivant : d'abord les données sont compressées, puis les données sont cryptées, puis téléchargées vers Object Storage.
-
Il existe deux méthodes de cryptage prises en charge :
-
Utilisation d'une fonction définie par l'utilisateur.
-
Utilisation d'un algorithme de cryptage indiqué par
DBMS_CRYPTO.Reportez-vous à DBMS_CRYPTO pour plus d'informations sur les fonctions cryptographiques et les procédures de chiffrement et de déchiffrement.
-
Crypter les données à l'aide d'algorithmes de cryptage DBMS_CRYPTO
Présente les étapes de cryptage des données à l'aide des algorithmes de cryptage DBMS_CRYPTO lors de l'export vers Cloud Object Storage.
Pour crypter les données lors de l'export vers Cloud Object Storage (cet exemple exporte les données de table dans un fichier CSV), procédez comme suit :
-
Connectez-vous à votre instance Autonomous AI Database.
Pour plus d'informations, reportez-vous à Connexion à Autonomous AI Database.
-
Stockez vos informations d'identification de stockage d'objet cloud à l'aide de la procédure
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 fournies pour
usernameetpassworddépendent du service Cloud Object Storage que vous utilisez .Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.
La création d'informations d'identification pour accéder à la banque d'objets Oracle Cloud Infrastructure n'est pas requise si vous activez les informations d'identification de principal de ressource. Pour plus d'informations, reportez-vous à Utilisation du principal de ressource pour accéder aux ressourcesOracle Cloud Infrastructure.
-
Créez des informations d'identification pour stocker la clé de cryptage (la clé de cryptage à utiliser pour le cryptage des données).
Lorsque vous cryptez des données à l'aide d'algorithmes de cryptage
DBMS_CRYPTO, vous stockez la clé de cryptage dans des informations d'identification. La clé est indiquée dans le champpassworddans les informations d'identification que vous créez avecDBMS_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 informations d'identification pour stocker la clé dans un coffre. 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; /Remarque
Remarque : le paramètreusernameindiqué 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.EXPORT_DATA.Utilisez le paramètre
formatavec l'optionencryption. Le typeencryptionindique l'algorithme de cryptageDBMS_CRYPTOà utiliser pour crypter les données de la table. La valeurcredential_namecorrespond aux informations d'identification qui indiquent la clé secrète (clé de cryptage).Par 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; /Cette opération crypte et exporte les données de la table
EMPLOYEESdans un fichier CSV.Pour plus d'informations sur les algorithmes de cryptage, reportez-vous à Algorithmes DBMS_CRYPTO.
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 plus d'informations, reportez-vous aux sections Procédure EXPORT_DATA et Options de format de package DBMS_CLOUD pour EXPORT_DATA.
Après avoir crypté les fichiers avec DBMS_CLOUD.EXPORT_DATA, lorsque vous utilisez des algorithmes de cryptage DBMS_CRYPTO pour crypter les fichiers, vous disposez des options suivantes pour utiliser ou importer les fichiers que vous avez exportés :
-
Vous pouvez utiliser
DBMS_CLOUD.COPY_DATAouDBMS_CLOUD.COPY_COLLECTIONavec les mêmes options d'algorithme de cryptage et la même clé pour décrypter les fichiers.Pour plus d'informations, reportez-vous à Décryptage et chargement de 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 cryptage et la clé de décryptage des fichiers, avec l'une des procédures suivantes :
-
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.
Pour plus d'informations, reportez-vous à Décryptage et chargement de données à l'aide des algorithmes DBMS_CRYPTO.
-
-
Sur un système qui n'est pas une base de données Autonomous AI, vous pouvez utiliser le package
DBMS_CRYPTOavec les mêmes options d'algorithme et la clé pour décrypter les fichiers.La clé est stockée en tant que
VARCHAR2dans les informations d'identification dans la base de données Autonomous AI, maisDBMS_CRYPTOutilise le typeRAWpour le paramètre de clé.Pour plus d'informations sur les algorithmes de cryptage, reportez-vous à Algorithmes DBMS_CRYPTO.
Crypter les données avec une fonction de cryptage définie par l'utilisateur
Présente les étapes de cryptage des données à l'aide d'une fonction de cryptage définie par l'utilisateur lors de l'export vers Cloud Object Storage.
Pour crypter les données lors de l'export vers Cloud Object Storage (cet exemple exporte les données de table dans un fichier CSV), procédez comme suit :
-
Connectez-vous à votre instance Autonomous AI Database.
Pour plus d'informations, reportez-vous à Connexion à Autonomous AI Database.
-
Stockez vos informations d'identification de stockage d'objet cloud à l'aide de la procédure
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 fournies pour
usernameetpassworddépendent du service Cloud Object Storage que vous utilisez .Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.
La création d'informations d'identification pour accéder à la banque d'objets Oracle Cloud Infrastructure n'est pas requise si vous activez les informations d'identification de principal de ressource. Pour plus d'informations, reportez-vous à Utilisation du principal de ressource pour accéder aux ressourcesOracle Cloud Infrastructure.
-
Créez une fonction de rappel définie par l'utilisateur pour crypter 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; /La fonction de cryptage
ENCRYPTION_FUNCest ainsi créée. Cette fonction crypte les données à l'aide d'un cryptage de flux ou de bloc avec une clé fournie par l'utilisateur.Remarque
Remarque : vous devez créer une clé de cryptage à utiliser comme valeur dans le paramètreKEY. Pour plus d'informations sur la génération de la clé de cryptage, reportez-vous à Notes opérationnelles DBMS_CRYPTO. -
Exécutez
DBMS_CLOUD.EXPORT_DATAavec le paramètreformat, incluez l'optionencryptionet indiquez une valeuruser_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/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 crypte les données de la requête spécifiée dans la table
EMPet les exporte en tant que fichier CSV sur Cloud Object Storage. Le paramètreformatavec la valeurencryptionindique la fonction de cryptage définie par l'utilisateur à utiliser pour crypter les données.Remarque
Remarque : vous devez disposer du privilègeEXECUTEsur la fonction de cryptage.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 plus d'informations, reportez-vous aux sections Procédure EXPORT_DATA et Options de format de package DBMS_CLOUD pour EXPORT_DATA.