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 Databases implantados no 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 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 Rede Virtual na Nuvem (VCN) em que seus recursos do Autonomous 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 de roteamento e uma regra de segurança de saída a cada sub-rede (na VCN) na qual os recursos do Autonomous Database residem para que esses recursos possam usar o gateway para obter uma chave pública da sua instância do Azure AD:
    1. Vá para a página Detalhes da Sub-rede da sub-rede.
    2. Na guia Informações da Sub-rede, clique no nome da Tabela de Rota da sub-rede para exibir sua respectiva página Detalhes da Tabela de Rota.
    3. Na tabela de Regras de Roteamento existentes, verifique se já existe uma regra com as seguintes características:
      • Destino: 0.0.0.0/0
      • Tipo de Destino: Gateway NAT
      • Alvo: O nome do gateway NAT recém-criado na VCN

      Se essa regra não existir, clique em Adicionar Regras de Rota e adicione uma regra de roteamento com essas características.

    4. Retorne à página Detalhes da Sub-rede da sub-rede.
    5. Na tabela Listas de Segurança da sub-rede, clique no nome da lista de segurança da sub-rede para exibir a página Detalhes da Lista de Segurança.
    6. No menu lateral, em Recursos, clique em Regras de Saída.
    7. 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
      • Faixa de Portas de Destino: Todas

      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 o Exadata Infrastructure esteja no estado Exige Ativação. Depois de ativado, você não poderá 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.

DBMS_CLOUD Subprogramas para Gerenciamento de Acesso

Os subprogramas para gerenciamento de credenciais no pacote DBMS_CLOUD, incluindo criar, excluir e atualizar credenciais.

Subprograma Descrição

Procedimento CREATE_CREDENTIAL

Este procedimento armazena credenciais de serviço de nuvem no Autonomous Database.

Procedimento DROP_CREDENTIAL

Este procedimento remove uma credencial existente do Autonomous Database.

Procedimento UPDATE_CREDENTIAL

Este procedimento atualiza atributos de credenciais de serviço em nuvem no Autonomous Database.

Procedimento CREATE_CREDENTIAL

Este procedimento armazena credenciais de serviço de nuvem no Autonomous Database.

Use credenciais de serviço de nuvem armazenadas para acessar o serviço de nuvem para carregamento de dados, para consulta de dados externos que residem na nuvem ou para outros casos ao usar 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 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 sobre o que especificar para username e password para diferentes serviços de 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 ADMIN pode ver todas as credenciais consultando a tabela dba_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_CLOUD que exigem um parâmetro credential_name.

  • Este procedimento é sobrecarregado. Se você fornecer um dos atributos de autenticação baseados em chave, user_ocid, tenancy_ocid, private_key ou fingerprint, 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 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 ao autenticar 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 a autenticação de Chave 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.

Credenciais Compatíveis com o Amazon S3

Serviço Informações de Credenciais

Google Cloud Storage

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.

Procedimento DROP_CREDENTIAL

Este procedimento remove uma credencial existente do Autonomous 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 um credential_name especificado.

Use credenciais armazenadas para carregamento de dados, para consultar dados externos que residem na Nuvem ou onde quer que você use procedimentos DBMS_CLOUD com o 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 de tipo de nome de usuário/senha, os valores válidos de attribute são: USERNAME e PASSWORD.

Consulte Procedimento CREATE_CREDENTIAL para obter mais informações.

value

Novo valor para o atributo especificado.

Observações sobre Uso

  • O valor do nome do usuário diferencia maiúsculas de minúsculas. Ele não pode conter aspas duplas ou espaços.

  • O usuário ADMIN pode ver todas as credenciais consultando dba_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_CLOUD que exigem um parâmetro credential_name.

  • Você pode listar credenciais na view ALL_CREDENTIALS. Por exemplo, execute o seguinte comando para listar 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;
/