Descriptografar Dados Durante a Importação do Serviço Object Storage
Você pode decriptografar e carregar dados de arquivos criptografados armazenados no Object Storage. Você também pode decriptografar dados criptografados no Object Storage que usa em uma tabela externa.
Essa opção é útil ao migrar de um banco de dados local para um Autonomous AI Database se os dados em seus arquivos de origem forem criptografados.
Observação: Esta opção só é suportada para arquivos do serviço Object Storage com menos de 4 GB.
Essa opção se aplica aos seguintes procedimentos:
-
DBMS_CLOUD.COPY_DATA -
DBMS_CLOUD.CREATE_EXTERNAL_TABLE -
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE -
DBMS_CLOUD.CREATE_HYBRID_PART_TABLEPara
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE, essa opção só se aplica aos arquivos do serviço Object Storage. -
DBMS_CLOUD.COPY_COLLECTION
Descriptografar e carregar dados com algoritmos DBMS_CRYPTO
Mostra as etapas para decriptografar arquivos criptografados do serviço Object Storage e carregar os dados em uma tabela no Autonomous AI Database (a etapa de decriptografia usa algoritmos DBMS_CRYPTO).
Como pré-requisito, você deve ter arquivos criptografados e fazer upload dos arquivos no Object Storage. Este exemplo usa um arquivo CSV e presume-se que o arquivo seja criptografado usando o algoritmo DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 e carregado no Cloud Object Storage.
Consulte Função ENCRYPT para obter mais informações sobre a função ENCRYPT.
Consulte Observações Operacionais DBMS_CRYPTO para obter mais informações sobre como gerar uma chave de criptografia.
Para decriptografar e carregar dados em uma tabela existente no Autonomous AI Database do serviço Object Storage:
-
Conecte-se à sua instância do Autonomous AI Database.
-
Armazene a sua credencial do Cloud Object Storage usando
DBMS_CLOUD.CREATE_CREDENTIAL.Por exemplo:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OBJ_STORE_CRED', username => 'user1@example.com', password => 'password' ); END; /Os valores fornecidos para
usernameepassworddependem do serviço de Cloud Object Storage que você está usando.Consulte Procedimento CREATE_CREDENTIAL para obter mais informações.
-
Crie uma credencial para armazenar a chave usando
DBMS_CLOUD.CREATE_CREDENTIAL. Por exemplo:BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'ENC_CRED_NAME', username => '*Any_username*', password => 'password' ); END; /Como alternativa, você pode criar credenciais para armazenar a chave em um vault. Por exemplo:
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; /Observação: O parâmetro
usernameespecificado na credencial que armazena a chave pode ser qualquer string.Isso cria a credencial
ENC_CRED_NAME, que é uma credencial secreta do vault, na qual o segredo (chave de decriptografia/criptografia) é armazenado como segredo no Oracle Cloud Infrastructure Vault.Consulte Procedimento CREATE_CREDENTIAL para obter mais informações.
-
Execute
DBMS_CLOUD.COPY_DATAe especifique o algoritmo de criptografiaDBMS_CRYPTOcomo método de decriptografia.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; /Isso decriptografa o arquivo
ENCRYPTED.CSVno Object Storage. Os dados são então carregados na tabelaCSV_COPY_DATA. O valor da opçãoencryptiondo parâmetroformatespecifica um algoritmo de criptografiaDBMS_CRYPTOa ser usado para decriptografar dados.Consulte Algoritmos DBMS_CRYPTO para obter mais informações sobre algoritmos de criptografia.
Neste exemplo,
*namespace-string*é o namespace do Oracle Cloud Infrastructure Object Storage ebucketnameé o nome do bucket. Consulte Noções Básicas de Namespaces do serviço Object Storage para obter mais informações.Para obter informações detalhadas sobre os parâmetros, consulte Procedimento COBY_DATA.
Para obter informações detalhadas sobre os parâmetros
formatdisponíveis, você pode usar comDBMS_CLOUD.COPY_DATA, consulte Opções de Formato de Pacote DBMS_CLOUD.
Decriptografar e Carregar Dados com uma Função Definida pelo Usuário
Mostra as etapas para decriptografar arquivos no Object Storage e carregar os dados em tabelas usando uma função de decriptografia definida pelo usuário.
Como pré-requisito para essas etapas, você deve ter arquivos criptografados e fazer upload dos arquivos no Object Storage. Este exemplo usa um arquivo CSV e presume-se que o arquivo seja criptografado usando o algoritmo DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5 e carregado no Cloud Object Storage.
Consulte Função ENCRYPT para obter mais informações sobre a função ENCRYPT.
Consulte Observações Operacionais DBMS_CRYPTO para obter mais informações sobre como gerar uma chave de criptografia.
Para decriptografar e carregar dados em uma tabela existente no Autonomous AI Database do Object Storage:
-
Conecte-se à sua instância do Autonomous AI Database.
-
Armazene a sua credencial do Cloud Object Storage usando
DBMS_CLOUD.CREATE_CREDENTIAL.Por exemplo:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OBJ_STORE_CRED', username => 'user1@example.com', password => 'password' ); END; /Os valores fornecidos para
usernameepassworddependem do serviço de Cloud Object Storage que você está usando.Consulte Procedimento CREATE_CREDENTIAL para obter mais informações.
-
Crie uma função de callback de decriptografia de função definida pelo usuário.
Por exemplo:
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; /Isso cria a função de decriptografia
DECRYPTION_FUNC. Esta função decriptografa dados usando uma cifra de fluxo ou bloco com uma chave fornecida pelo usuário. A chave fornecida pelo usuário no exemplo é armazenada no Oracle Cloud Infrastructure Vault e é recuperada dinamicamente fazendo uma chamada REST para o serviço Oracle Cloud Infrastructure Vault. -
Execute
DBMS_CLOUD.COPY_DATAe especifique a opçãoformatencryptione especifique a função definida pelo usuário que você criou para decriptografar os dados.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; /Isso decriptografa o arquivo
ENCRYPTED.CSVno Object Storage. Os dados são então carregados na tabelaCSV_COPY_DATA. O valor da opçãoencryptiondo parâmetroformatespecifica um nome de função definido pelo usuário a ser usado para decriptografar dados.Observação: Você deve ter o privilégio
EXECUTEna função definida pelo usuário.Neste exemplo,
namespace-stringé o namespace do Oracle Cloud Infrastructure Object Storage ebucketnameé o nome do bucket. Consulte Noções Básicas de Namespaces do serviço Object Storage para obter mais informações.Para obter informações detalhadas sobre os parâmetros, consulte Procedimento COBY_DATA.
Para obter informações detalhadas sobre os parâmetros
formatdisponíveis, você pode usar comDBMS_CLOUD.COPY_DATA, consulte Opções de Formato de Pacote DBMS_CLOUD.