DBMS_CLOUD para Gerenciamento de Acesso
Esta seção aborda os subprogramas DBMS_CLOUD usados para gerenciamento de acesso.
Pré-requisitos
Como desenvolvedor, você pode usar procedimentos DBMS_CLOUD com Autonomous AI Databases implantados na Oracle Public Cloud, Multicloud ou Exadata Cloud@Customer.
Dependendo da opção de implantação, os pré-requisitos a seguir devem ser atendidos para usar os procedimentos DBMS_CLOUD com os provedores de serviços Amazon S3, Azure Blob Storage e Google Cloud Storage.
Uma conectividade de saída deve ter sido configurada usando um gateway NAT, pelo administrador da frota, conforme descrito abaixo:
-
Crie um gateway NAT na VCN (Virtual Cloud Network) em que seus recursos do Autonomous AI Database residem seguindo as instruções em Criar um Gateway NAT na Documentação do Oracle Cloud Infrastructure.
-
Após criar o gateway NAT, adicione uma regra da rota e uma regra da segurança da saída a cada sub-rede (na VCN) na qual os recursos do Autonomous AI Database residem para que esses recursos possam usar o gateway para obter a chave pública da sua instância doAzure AD
-
Vá para a página Detalhes de Sub-rede da sub-rede.
-
Na guia Informações da Sub-rede, clique no nome da Tabela da Rota da sub-redes para exibir sua página Detalhes da Tabela de Roteamento.
-
Na tabela de Regras de Rota existentes, verifique se já existe uma regra com as seguintes características:
-
Destino: 0.0.0.0/0
-
Target Type: Gateway NAT
-
Destino: O nome do gateway NAT que você acaba de criar na VCN
Se essa regra não existir, clique em Adicionar Regras de Roteamento e adicione uma regra de roteamento com essas características.
-
-
Retorne à página Detalhes da Subrede da sub-rede.
-
Na tabela Listas de Segurança da subrede, clique no nome da lista para exibir sua página Detalhes da Lista de Segurança.
-
No menu lateral, em Recursos, clique em Regras de Saída.
-
Na tabela de Regras de Saída existentes, verifique se já existe uma regra com as seguintes características:
-
Tipo de Destino:CIDR
-
Destino:0.0.0.0/0
-
Protocolo IP:TCP
-
Faixa de Portas de Origem:443
-
Intervalo de Portas de Destino:Tudo
Se essa regra não existir, clique em Adicionar Regras de Saída e adicione uma regra de saída com essas características.
-
-
As definições de Proxy HTTP em seu ambiente devem permitir que o banco de dados acesse o provedor de serviços em nuvem.
Essas definições são definidas pelo administrador da frota ao criar a infraestrutura do Exadata Cloud@Customer conforme descrito em Usando a Console para Provisionar o Exadata Database Service on Cloud@Customer.
Observação: A configuração de rede, incluindo o Proxy HTTP, só poderá ser editada até que a Infraestrutura do Exadata esteja no estado Exige Ativação. Uma vez ativado, você não pode editar essas configurações.
A configuração de um Proxy HTTP para uma Infraestrutura do Exadata já provisionada precisa de uma Solicitação de Serviço (SR) no My Oracle Support. Consulte Criar uma Solicitação de Serviço no My Oracle Support para obter detalhes.
Resumo de Subprogramas DBMS_CLOUD para Gerenciamento de Acesso
Os subprogramas para gerenciamento de credenciais no pacote DBMS_CLOUD, incluindo criação, exclusão e atualização de credenciais.
| Subprograma | Descrição |
|---|---|
| Procedimento CREATE_CREDENTIAL | Este procedimento armazena credenciais do serviço da nuvem no Autonomous AI Database. |
| Procedimento DROP_CREDENTIAL | Este procedimento remove uma credencial existente do Autonomous AI Database. |
| Procedimento UPDATE_CREDENTIAL | Este procedimento atualiza os atributos de credencial do serviço da nuvem no Autonomous AI Database. |
Procedimento CREATE_CREDENTIAL
Este procedimento armazena credenciais do serviço da nuvem no Autonomous AI Database.
Use credenciais armazenadas do serviço na nuvem para acessar o serviço na nuvem para carga de dados, para consultar dados externos que residem na nuvem ou para outros casos quando você usa procedimentos DBMS_CLOUD com um parâmetro credential_name.
Sintaxe
DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name IN VARCHAR2,
username IN VARCHAR2,
password IN VARCHAR2 DEFAULT NULL);
DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name IN VARCHAR2,
user_ocid IN VARCHAR2,
tenancy_ocid IN VARCHAR2,
private_key IN VARCHAR2,
fingerprint IN VARCHAR2);
Parâmetros
| Parâmetro | Descrição |
|---|---|
credential_name |
O nome da credencial a ser armazenada. O parâmetro credential_name deve estar em conformidade com as convenções de nomenclatura de objetos da Oracle, que não permitem espaços nem hifens. |
username |
Os argumentos username e password juntos especificam suas credenciais de serviço de nuvem. Consulte as observações de uso para saber o que especificar para o username e password para diferentes serviços na nuvem. |
password |
Os argumentos username e password juntos especificam suas credenciais de serviço de nuvem. |
user_ocid |
Especifica o OCID do usuário. Consulte Onde Obter o OCID da Tenancy e o OCID do Usuário para obter detalhes sobre como obter o OCID do Usuário. |
tenancy_ocid |
Especifica o OCID da tenancy. Consulte Onde Obter o OCID da Tenancy e o OCID do Usuário para obter detalhes sobre como obter o OCID da Tenancy. |
private_key |
Especifica a chave privada gerada. Não há suporte para chaves privadas geradas com uma frase-senha. É necessário gerar a chave privada sem uma frase-senha. Consulte Como Gerar uma Chave de Assinatura de API para obter detalhes sobre a geração de um par de chaves no formato PEM. |
fingerprint |
Especifica uma impressão digital. Após o upload de uma chave pública gerada para a conta do usuário, a impressão digital é exibida na console. Use a impressão digital exibida para esse argumento. Consulte Como Obter a Impressão Digital da Chave e Como Gerar uma Chave de Assinatura de API para obter mais detalhes. |
Observações sobre Uso
-
Esta operação armazena as credenciais no banco de dados em um formato criptografado.
-
Você pode ver as credenciais no seu esquema consultando a tabela
user_credentials. -
O usuário
ADMINpode ver todas as credenciais consultando a tabeladba_credentials. -
Você só precisa criar credenciais uma vez, a menos que suas credenciais de serviço de nuvem mudem. Depois de armazenar as credenciais, você poderá usar o mesmo nome de credencial para procedimentos
DBMS_CLOUDque exigem um parâmetrocredential_name. -
Este procedimento é sobrecarregado. Se você fornecer um dos atributos de autenticação baseados em chave,
user_ocid,tenancy_ocid,private_keyoufingerprint, será considerado que que a chamada é uma credencial baseada na Chave de Assinatura do Oracle Cloud Infrastructure. -
Você pode listar credenciais na view
ALL_CREDENTIALS. Por exemplo, execute o seguinte comando para listar as credenciais:SELECT credential_name, username, comments FROM all_credentials;
Credenciais do Oracle Cloud Infrastructure (Tokens de Autenticação)
Para o Oracle Cloud Infrastructure, o username é o seu nome de usuário do Oracle Cloud Infrastructure. A password é o seu token de autenticação do Oracle Cloud Infrastructure. Consulte Como Trabalhar com Tokens de Autenticação.
Por exemplo:
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'DEF_CRED_NAME',
username => 'adb_user@example.com',
password => 'password' );
END;
/
Use credenciais baseadas em Token de Autenticação quando estiver autenticando chamadas para o OCI Object Storage. Para chamadas para qualquer outro tipo de serviço de nuvem do Oracle Cloud Infrastructure, use Credenciais Baseadas em Chave de Assinatura do Oracle Cloud Infrastructure.
Credenciais Baseadas em Chave de Assinatura do Oracle Cloud Infrastructure
Use os parâmetros relacionados à chave de assinatura do Oracle Cloud Infrastructure, incluindo: user_ocid, tenancy_ocid, private_key e fingerprint com autenticação de Chaves de Assinatura do Oracle Cloud Infrastructure.
Por exemplo:
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name => 'OCI_KEY_CRED',
user_ocid => 'ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa',
tenancy_ocid => 'ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a',
private_key => 'MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=',
fingerprint => 'f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27');
END;
/
Não há suporte para chaves privadas geradas com uma frase-senha. É necessário gerar a chave privada sem uma frase-senha. Consulte Como Gerar uma Chave de Assinatura de API para obter mais informações.
Credenciais do Amazon Web Services (AWS)
Se seus arquivos de origem residirem no Amazon S3 ou você estiver chamando uma API da AWS, username será seu ID da chave de acesso da AWS e password será sua chave de acesso secreta da AWS. Consulte AWS Identity and Access Management.
Credenciais do Microsoft Azure
Se seus arquivos de origem residirem no Armazenamento de Blobs do Azure ou você estiver chamando uma API do Azure, username será o nome da sua conta de armazenamento do Azure e password será uma chave de acesso à conta de armazenamento do Azure. Consulte Sobre contas de armazenamento do Azure.
Amazon S3-Credenciais Compatíveis
| Serviço | Informações de Credenciais |
|---|---|
| Armazenamento do Google Cloud | Se seus arquivos de origem residirem no Google Cloud Storage ou você estiver chamando APIs do Google Cloud Storage, será necessário definir um projeto padrão do Google e obter uma chave HMAC para criar credenciais a serem fornecidas com URLs compatíveis com o S3 do Google Cloud Storage. Use o id da chave HMAC como o nome do usuário e o segredo HMAC como a senha. Consulte Projetos e Chaves HMAC para obter mais informações. |
Gerenciar Credencial DBMS_CLOUD para autenticação no C3 Object Storage
Você pode usar o procedimento DBMS_CLOUD.CREATE_CREDENTIAL para fornecer ao Autonomous AI Database as informações de autenticação necessárias para estabelecer conexão com o Bucket do C3 Object Storage. Use os parâmetros relacionados à chave de assinatura do Oracle Cloud Infrastructure, incluindo user_ocid, tenancy_ocid, private_key e fingerprint com autenticação das Chaves de Assinatura do Oracle Cloud Infrastructure.
Por exemplo,
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name => 'OBJECT_STORAGE_CREDENTIAL',
user_ocid => 'ocid1.user.oc1..abcdedfxxxxx',
tenancy_ocid => 'ocid1.tenancy.oc1..abcdefxyyyyyy',
private_key => 'MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDku_Rest_of_PrivateKey_no_spaces_no_newlines',
fingerprint => '3d:ba:f9:aa:bb:cc:dd:ee:ff:gg:hh:ii:jj:xa:xb:xc'
);
END;
/
Procedimento DROP_CREDENTIAL
Este procedimento remove uma credencial existente do Autonomous AI Database.
Sintaxe
DBMS_CLOUD.DROP_CREDENTIAL (
credential_name IN VARCHAR2);
Parâmetros
| Parâmetro | Descrição |
|---|---|
credential_name |
O nome da credencial a ser removida. |
Procedimento UPDATE_CREDENTIAL
Este procedimento atualiza um atributo com um novo valor para uma credential_name especificada.
Use credenciais armazenadas para carregamento de dados, para consultar dados externos residentes na Nuvem ou sempre que você usar procedimentos DBMS_CLOUD com um parâmetro credential_name.
Sintaxe
DBMS_CLOUD.UPDATE_CREDENTIAL (
credential_name IN VARCHAR2,
attribute IN VARCHAR2,
value IN VARCHAR2);
Parâmetros
| Parâmetro | Descrição |
|---|---|
credential_name |
O nome da credencial a ser atualizada. |
attribute |
Nome do atributo a ser atualizado. Para uma credencial do tipo nome de usuário/senha, os valores Consulte Procedimento CREATE_CREDENTIAL para obter mais informações. |
value |
Novo valor para o atributo especificado. |
Observações sobre Uso
-
O valor do nome de usuário faz distinção entre maiúsculas e minúsculas. Ele não pode conter aspas duplas ou espaços.
-
O usuário do
ADMINpode ver todas as credenciais consultandodba_credentials. -
Você só precisa criar credenciais uma vez, a menos que suas credenciais de serviço de nuvem mudem. Depois de armazenar as credenciais, você poderá usar o mesmo nome de credencial para procedimentos
DBMS_CLOUDque exigem um parâmetrocredential_name. -
Você pode listar credenciais na view
ALL_CREDENTIALS. Por exemplo, execute o seguinte comando para listar as credenciais:SELECT credential_name, username, comments FROM all_credentials;
Exemplos
BEGIN
DBMS_CLOUD.UPDATE_CREDENTIAL(
credential_name => 'OBJ_STORE_CRED',
attribute => 'PASSWORD',
value => 'password');
END;
/
BEGIN
DBMS_CLOUD.UPDATE_CREDENTIAL(
credential_name => 'ARN_CRED',
attribute => 'aws_role_arn',
value => 'NEW_AWS_ARN');
END;
/