Usar Amazon Resource Names (ARNs) para Acessar Recursos da AWS

Você pode usar ADNs (Amazon Resource Names) para acessar recursos da AWS com o Autonomous Database.

Sobre o uso de Amazon Resource Names (ARNs) para Acessar Recursos da AWS

Ao usar a autenticação baseada em atribuição ARN com o Autonomous Database, você pode acessar com segurança os recursos da AWS sem criar e salvar credenciais com base em chaves de acesso de longo prazo do AWS IAM.

Por exemplo, talvez você queira carregar dados de um bucket do AWS S3 no seu Autonomous Database, executar alguma operação nos dados e, em seguida, gravar os dados modificados de volta no bucket do S3. Você poderá fazer isso sem usar um ARN se tiver credenciais de usuário da AWS para acessar o bucket S3. No entanto, o uso de ARNs baseados em atribuição para acessar recursos da AWS no Autonomous Database tem os seguintes benefícios:

  • Você pode criar acesso baseado em atribuição, com diferentes políticas para diferentes usuários ou esquemas que precisam de acesso aos recursos da AWS de uma instância do Autonomous Database. Isso permite que você defina uma política para limitar o acesso aos recursos da AWS por função. Por exemplo, definindo uma política que se limita ao acesso somente leitura, por atribuição, para um bucket S3.
  • As credenciais baseadas em ARN fornecem melhor segurança, pois você não precisa fornecer credenciais de usuário da AWS de longo prazo no código para acessar os recursos da AWS. O Autonomous Database gerencia as credenciais temporárias geradas na Operação Assume Atribuição da AWS.

Etapas para Configurar o Uso do ARN com o Autonomous Database

Antes de criar uma credencial usando um ARN no Autonomous Database, no AWS, o administrador da conta deve definir uma política que permita acessar recursos do AWS, como um bucket S3. Por padrão, os serviços de credenciais ARN não são ativados no Autonomous Database. O usuário ADMIN ativa credenciais ARN para o usuário necessário, o que permite que ele crie e use credenciais ARN na instância do Autonomous Database.

Na AWS, a função ARN é o identificador do acesso fornecido e pode ser visualizada no console da AWS. Para segurança adicional, quando o administrador da AWS configura a função, as políticas e o relacionamento de confiança para a conta da AWS, ele também deve configurar um ID externo no relacionamento de confiança da função.

O ID Externo fornece proteção adicional para assumir funções. O administrador da AWS configura o ID Externo como um dos seguintes, com base na instância do Autonomous Database:

  • O OCID do compartimento

  • O OCID do banco de dados

  • O OCID da tenancy

Na AWS, a função só pode ser assumida por usuários confiáveis identificados pelo ID externo incluído no URL da solicitação, em que o ID externo fornecido na solicitação corresponde ao ID externo configurado no relacionamento de confiança da função.

Observação

A definição do ID Externo é obrigatória para a segurança.

A figura a seguir descreve as etapas de configuração:

Veja a seguir a descrição da ilustração adb_arn_config_steps.eps
Descrição da ilustração adb_arn_config_steps.eps

Etapas para Usar ARNs com DBMS_CLOUD

Cada recurso da AWS tem sua própria identidade e o recurso se autentica com a instância do Autonomous Database usando uma credencial DBMS_CLOUD que você cria com parâmetros que identificam o ARN. O Autonomous Database cria e protege as credenciais principais usadas para acessar os recursos da AWS.

Para criar uma credencial com parâmetros ARN para acessar os recursos da AWS:

  1. Execute as etapas de pré-requisito na Conta da AWS: Na sua conta da AWS, no Console de Gerenciamento da AWS ou usando a CLI, crie as atribuições e políticas para o ARN que você usa com o Autonomous Database e atualize o relacionamento de confiança da atribuição. O ARN do usuário Oracle é configurado quando a relação de confiança da função é atualizada.

    Consulte Executar Pré-requisitos do AWS Management para Usar ADNs (Amazon Resource Names) para obter mais informações.

  2. Executar etapas de pré-requisito no Autonomous Database: No Autonomous Database, você deve permitir que o usuário ADMIN ou outro usuário use credenciais com parâmetros ARN para acessar os recursos da AWS.

    Consulte Executar Pré-requisitos de Autonomous Database para Usar ARNs da Amazon para obter mais informações.

  3. Crie credenciais com o DBMS_CLOUD.CREATE_CREDENTIAL e forneça os parâmetros que identificam uma atribuição AWS. Usando o objeto de credencial, o Autonomous Database pode acessar os recursos da AWS conforme especificado nas políticas definidas para a atribuição na conta da AWS.

    Consulte Criar Credenciais com Parâmetros ARN para Acessar Recursos da AWS para obter detalhes sobre essas etapas.

  4. Use o objeto de credencial criado na etapa anterior com um procedimento ou uma função DBMS_CLOUD que usa um parâmetro de credencial, como DBMS_CLOUD.COPY_DATA ou DBMS_CLOUD.LIST_OBJECTS.

Executar Pré-requisitos do AWS Management para Usar Amazon Resource Names (ARNs)

Usando o Console de Gerenciamento da AWS ou usando as APIs, crie um usuário, função, políticas e relacionamento de confiança da AWS. Execute estas etapas antes de usar com DBMS_CLOUD.CREATE_CREDENTIAL para criar uma credencial com um parâmetro ARN no Autonomous Database.

Para usar um ARN para acessar recursos da AWS, o administrador da AWS define as políticas e um principal que permite acessar recursos da AWS. Por exemplo, ao usar o Autonomous Database, talvez você queira acessar dados de um bucket S3, executar alguma operação nos dados e, em seguida, gravar os dados modificados de volta no bucket S3.

Observação

Dependendo da configuração existente da AWS e do ID Externo que você usa, não será necessário criar uma nova atribuição e política para cada instância do Autonomous Database. Se você já tiver uma atribuição da AWS que contenha a política necessária para acessar um recurso, por exemplo, para acessar o armazenamento na nuvem S3, poderá modificar o relacionamento de confiança para incluir os detalhes na Etapa 3. Da mesma forma, se você já tiver uma atribuição com a relação de confiança necessária, poderá usar essa atribuição para acessar todos os seus bancos de dados em um compartimento ou tenancy do OCI se usar um ID externo que especifique o OCID do compartimento ou o OCID da tenancy.

No Console de gerenciamento da AWS ou usando as APIs, um administrador da AWS executa as seguintes etapas:

  1. Criar uma política. Na política, você especifica permissões para acessar recursos da AWS, como buckets do S3.
  2. Crie uma atribuição e anexe a política à atribuição.
    1. Acesse o AWS Management Console e escolha Identity and Access Management (IAM).
    2. Clique em Criar atribuição.
    3. Selecione Outra conta da AWS.
    4. Informe o ID da Conta.
      Você usa isso como um valor temporário. Posteriormente, você substituirá isso pelo ID da conta usado para acessar os recursos da AWS.
    5. Na área Opções, selecione Exigir ID externo e informe um ID externo temporário, como 0000. Posteriormente, você substituirá esse ID externo por um valor válido.
    6. Clique em Próximas Permissões para anexar as Políticas criadas na Etapa 1 ou outras políticas que você deseja aplicar à atribuição.
    7. Clique em Próximas Tags e aplique ou crie tags conforme necessário para a atribuição.
    8. Clique em Próxima Revisão e adicione um Nome da Função e uma Descrição da Função.
    9. Clique em Criar Atribuição.

    Você usa o ARN da função com DBMS_CLOUD.CREATE_CREDENTIAL para criar objetos de credencial com parâmetros ARN para acessar recursos da AWS.

    Consulte Criando uma atribuição para delegar permissões a um usuário do IAM para obter mais informações.

  3. Especifique um Relacionamento de Confiança para a função.
    1. Na lista Funções, em Nome da função, selecione a função que você criou.
    2. Na página Resumo de funções da função selecionada, selecione a guia Relacionamentos de confiança.
    3. Na relação confiável, clique em Editar relação confiável.
    4. Edite a relação de confiança para especificar o parâmetro Principal AWS.

      Este ARN do usuário da AWS está disponível na exibição CLOUD_INTEGRATIONS. Consulte Executar Pré-requisitos de Autonomous Database para Usar ARNs da Amazon para obter mais informações.

    5. Edite o relacionamento de confiança para especificar o ID externo.

      No Autonomous Database, quando você cria uma credencial do AWS ARN com DBMS_CLOUD.CREATE_CREDENTIAL ou quando ativa o AWS ARN com DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH, por padrão, o valor do parâmetro external_id_type é database_ocid. Opcionalmente, você pode definir o valor external_id_type como um dos valores suportados: database_ocid, compartment_ocid ou tenant_ocid.

      Quando você usa o OCID do banco de dados como o ID Externo, a relação de confiança da política só confia na instância do Autonomous Database especificada com o OCID. Se você usar um OCID de compartimento, a relação de confiança da política confiará em todas as instâncias do Autonomous Database no compartimento e você poderá usar o mesmo ARN de atribuição para conceder acesso aos recursos da AWS a qualquer Autonomous Database no compartimento especificado. Da mesma forma, se você usar o OCID da tenancy, poderá usar o mesmo ARN de atribuição para conceder acesso aos recursos da AWS a qualquer Autonomous Database na tenancy especificada.

      Anteriormente, na Etapa 2, você definia o ID Externo da relação de confiança como o valor temporário 0000.

      Na AWS, você configura o valor do ID externo do relacionamento de confiança para corresponder a um dos seguintes:

      • Quando o tipo external_id_type é database_ocid, na AWS você configura o ID Externo da relação de confiança da atribuição como o OCID do Banco de Dados.

        O OCID do Banco de Dados está disponível executando a seguinte consulta:

        SELECT cloud_identity FROM v$pdbs;

        Consulte Obter Detalhes da Tenancy para obter mais informações.

      • Quando o tipo external_id_type é compartment_ocid, na AWS você configura o ID Externo da relação de confiança da atribuição como o OCID do Compartimento.

        O OCID do Compartimento está disponível na página de detalhes do Compartimento na Console do Oracle Cloud Infrastructure. Para localizar a página de detalhes do Compartimento, no menu de navegação esquerdo do Oracle Cloud Infrastructure, clique em Identidade e Segurança e selecione Compartimentos. Selecione o compartimento que contém a instância do Autonomous Database para ver o ID do Compartimento.

      • Quando o tipo external_id_type é tenant_ocid, na AWS você configura o ID Externo da relação de confiança da atribuição como o OCID da Tenancy.

        O OCID da Tenancy está disponível na página de detalhes da Tenancy na Console do Oracle Cloud Infrastructure. Para localizar a página de detalhes da Tenancy, no menu de navegação esquerdo do Oracle Cloud Infrastructure, clique em Governança e Administração e selecione Detalhes da Tenancy. A guia Informações da Tenancy mostra o OCID da Tenancy.

      • Quando você define o valor para ExternalID, por padrão, o valor do OCID deve estar em letras maiúsculas. Se você quiser fornecer o OCID em letras minúsculas, defina a condição "StringEqualsIgnoreCase" em vez de "StringEquals" no JSON ao editar a relação de confiança.

      Veja a seguir a descrição da ilustração arn_aws_create_role_aws_trust_final.png
      Descrição da ilustração arn_aws_create_role_aws_trust_final.png

Depois que a configuração da função ARN for concluída, você poderá ativar o ARN na instância. Consulte Executar Pré-requisitos de Autonomous Database para Usar ARNs da Amazon para obter mais informações.

Executar Pré-requisitos do Autonomous Database para Usar ARNs da Amazon

Antes de usar um recurso da AWS com DBMS_CLOUD.CREATE_CREDENTIAL com um parâmetro ARN, o usuário ADMIN deve ativar o ARN na instância do Autonomous Database.

Por padrão, os serviços de credenciais ARN não são ativados no Autonomous Database. O usuário ADMIN executa o procedimento DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH para permitir que o usuário ADMIN ou outros usuários criem credenciais com parâmetros ARN.

  1. Ative o uso de credenciais ARN na instância do Autonomous Database.
    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            username => 'adb_user',
            params => JSON_OBJECT( 
                    'aws_role_arn' value 'arn:aws:iam::123456:role/AWS_ROLE_ARN'));
    END;
    /
    

    Se você quiser que o usuário especificado tenha privilégios para ativar credenciais ARN para outros usuários, defina o parâmetro params grant_option como TRUE.

    Por exemplo:

    BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
         username => 'adb_user',
         params => JSON_OBJECT(
                         'aws_role_arn' value 'arn:aws:iam::123456:role/AWS_ROLE_ARN',
                         'grant_option' value TRUE ));
    END;
    /

    Depois que você executar esse comando, adb_user terá privilégios para ativar credenciais ARN para outros usuários.

    Por exemplo, se você se conectar como adb_user, poderá executar o seguinte comando:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            username => 'adb_user2'); 
    END;
    /
    

    Consulte ENABLE_PRINCIPAL_AUTH Procedures para obter mais informações.

  2. Consulte a exibição CLOUD_INTEGRATIONS para obter o ARN do usuário da AWS da Oracle.
    SELECT param_value FROM CLOUD_INTEGRATIONS
            WHERE param_name = 'aws_user_arn';
    
    PARAM_VALUE
    --------------------------------------------  
    arn:aws:iam::account-ID:user/username

    A view CLOUD_INTEGRATIONS está disponível para o usuário ADMIN ou para um usuário com privilégios DWROLE.

    O administrador da AWS usa o valor aws_user_arn ao configurar o relacionamento de confiança da atribuição da AWS com a atribuição e as políticas no sistema da AWS. O fornecimento desse valor concede permissão no lado da AWS para DBMS_CLOUD acessar recursos da AWS.

Depois que você ativar o ARN na instância do Autonomous Database executando DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH, a credencial chamada AWS$ARN estará disponível para uso com qualquer API DBMS_CLOUD que obtenha uma credencial como entrada. Com exceção da credencial chamada AWS$ARN, você também pode criar credenciais adicionais com parâmetros ARN para acessar os recursos da AWS. Consulte Criar Credenciais com Parâmetros do ARN para Acessar Recursos do AWS para obter mais informações.

Criar Credenciais com Parâmetros ARN para Acessar Recursos da AWS

Após o uso do ARN ser ativado para a instância do Autonomous Database e o ARN ser configurado pelo administrador da AWS, no Autonomous Database, você poderá criar um objeto de credencial com parâmetros do ARN.

O Autonomous Database cria e protege as credenciais principais usadas para acessar os recursos da Amazon quando você fornece o objeto de credencial com procedimentos e funções DBMS_CLOUD.

Para usar recursos da Amazon com o Autonomous Database, faça o seguinte:

  1. Crie credenciais usando o procedimento DBMS_CLOUD.CREATE_CREDENTIAL com o parâmetro params para especificar o valor do ARN. Por exemplo:
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_ARN',
        params =>
            JSON_OBJECT('aws_role_arn' value 'arn:aws:iam::123456:role/AWS_ROLE_ARN',                                            
                        'external_id_type' value 'database_ocid')
      );
    END;
    /

    Esta operação cria as credenciais no banco de dados em um formato criptografado. Você pode usar qualquer nome para o nome da credencial.

    Para obter informações detalhadas sobre os parâmetros, consulte ProcedimentoCREATE_CREDENTIAL.

  2. Use um procedimento DBMS_CLOUD para acessar um recurso da Amazon com as credenciais ARN.

    Por exemplo, use DBMS_CLOUD.LIST_OBJECTS.

    SELECT object_name FROM DBMS_CLOUD.LIST_OBJECTS(
               credential_name => 'DEF_CRED_ARN',
               location_uri    => 'https://my-bucket.s3.us-west-2.amazonaws.com/');

Atualizar Credenciais com Parâmetros ARN para Recursos da AWS

As credenciais ARN que você usa no Autonomous Database funcionam com o serviço de token da AWS que permite usar credenciais baseadas em atribuição temporária para acessar recursos da AWS no Autonomous Database.

Quando um Administrador da AWS revoga as políticas, as funções ou o relacionamento de confiança, você precisa atualizar as credenciais ou criar novas credenciais para acessar os recursos da AWS.

Execute as seguintes etapas para atualizar as credenciais:

  1. Use DBMS_CLOUD.UPDATE_CREDENTIAL para atualizar uma credencial baseada em ARN para fornecer um novo valor de ARN.
    BEGIN
      DBMS_CLOUD.UPDATE_CREDENTIAL(
         credential_name => 'DEF_CRED_ARN',
         attribute => 'aws_role_arn',
         value => 'new_ARN_value'); 
    END;
    /

    Isso atualiza o atributo aws_role_arn para o novo valor new_ARN_value da credencial chamada DEF_CRED_ARN.

  2. Use DBMS_CLOUD.UPDATE_CREDENTIAL para atualizar uma credencial baseada em ARN para atualizar o valor external_id_type do atributo.
    BEGIN
      DBMS_CLOUD.UPDATE_CREDENTIAL(
         credential_name => 'DEF_CRED_ARN',
         attribute => 'external_id_type',
         value => 'compartment_ocid'); 
    END;
    /

    Isso atualiza o valor do atributo external_id_type para o valor compartment_ocid.

Consulte UPDATE_CREDENTIAL Procedure e CREATE_CREDENTIAL Procedure para obter mais informações.