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

Você pode usar ARNs (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 do 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 do AWS IAM de longo prazo.

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 do 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 por meio de uma instância do Autonomous Database. Assim, você pode definir uma política para limitar o acesso aos recursos da AWS por função. Por exemplo, definir uma política que limita o acesso somente para leitura, por atribuição, a um bucket S3.
  • As credenciais baseadas em ARN oferecem maior segurança, uma vez que você não precisa fornecer credenciais de usuário da AWS de longo prazo em código para acessar recursos da AWS. O Autonomous Database gerencia as credenciais temporárias geradas pela Operação Pressupor 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, na AWS, o administrador da sua conta deve definir uma política que permita acessar recursos da AWS, como um bucket do S3. Por padrão, os serviços de credencial do ARN não são ativados no Autonomous Database. O usuário ADMIN ativa as credenciais do ARN para o usuário necessário, o que permite criar e usar as credenciais do ARN na instância do Autonomous Database.

Na AWS, o ARN da atribuição é o identificador do acesso fornecido e pode ser exibido na console da AWS. Para maior segurança, quando o administrador da AWS configurar a atribuição, as políticas e o relacionamento de confiança para a conta da AWS, ele também deverá configurar um ID Externo no relacionamento de confiança da atribuição.

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

  • OCID do compartimento

  • O OCID do banco de dados

  • O OCID da tenancy

Na AWS, a atribuiçã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 atribuição.

Observação

A definição do ID Externo é obrigatória para fins de 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 é autenticado na 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 do controlador que você usa para acessar recursos da AWS.

Para criar uma credencial com parâmetros ARN para acessar recursos da AWS, faça o seguinte:

  1. Executar etapas de pré-requisito na Conta da AWS: Em sua conta da AWS, na Console de Gerenciamento da AWS ou usando a CLI, crie as atribuições e políticas do 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 o relacionamento de confiança da atribuição é atualizado.

    Consulte Executar Pré-requisitos de Gerenciamento da AWS para Usar ARNs (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 recursos da AWS.

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

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

    Consulte Create Credentials with ARN Parameters to Access AWS Resources 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 utiliza 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 a Console de Gerenciamento da AWS ou as APIs, crie um usuário, uma atribuição, as políticas e um relacionamento de confiança com a AWS. Execute essas etapas antes do uso 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 controlador que permite acessar os recursos da AWS. Por exemplo, ao usar o Autonomous Database, talvez você queira acessar dados de um bucket do S3, executar alguma operação nos dados e gravar os dados modificados de volta no bucket do S3.

Observação

Dependendo da configuração existente da AWS e do ID Externo que você usa, não é 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 contém a política necessária para acessar um recurso, por exemplo, para acessar o armazenamento na nuvem do S3, será possível modificar o relacionamento de confiança para incluir os detalhes na Etapa 3. Da mesma forma, se você já tiver uma atribuição com o relacionamento de confiança necessário, poderá usar essa atribuição para acessar todos os seus bancos de dados em um compartimento ou em uma tenancy do OCI se usar um ID externo que especifique o OCID do compartimento ou da tenancy.

Na 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 os recursos da AWS, como buckets do S3.

    Consulte Criando uma política de IAM para acessar recursos do Amazon S3 para obter mais informações.

  2. Criar uma atribuição e anexá-la.
    1. Acesse a Console de Gerenciamento da AWS e escolha IAM (Identidade e Gerenciamento de Acesso).
    2. Clique em Criar atribuição.
    3. Selecione Outra conta da AWS.
    4. Informe o ID da Conta.
      Você o utiliza como valor temporário. Posteriormente, substitua-o pelo ID da Conta que você usa para acessar os recursos da AWS.
    5. Na área Opções, selecione Exigir ID externo e digite um ID externo temporário, como 0000. Mais tarde, você substituirá esse ID externo por um valor válido.
    6. Clique em Próximo 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 o Nome da Atribuição e a Descrição da Atribuição.
    9. Clique em Criar Atribuição.

    Use o ARN da atribuição com DBMS_CLOUD.CREATE_CREDENTIAL para criar objetos de credencial com parâmetros ARN para acessar os 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 atribuição.
    1. Na lista Atribuições, em Nome da atribuição, selecione a atribuição que você criou.
    2. Na página Resumo da atribuição selecionada, selecione a guia Relações de confiança.
    3. No relacionamento de confiança, clique em Editar relacionamento de confiança.
    4. Edite o relacionamento de confiança para especificar o parâmetro Controlador da AWS.

      Esse ARN do usuário da AWS está disponível na view CLOUD_INTEGRATIONS. Consulte Executar Pré-requisitos do 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 ARN da AWS com DBMS_CLOUD.CREATE_CREDENTIAL ou quando ativa o ARN da AWS 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 ID Externo, o relacionamento confiável da política só confia na instância do Autonomous Database especificada com o OCID. Se você usar um OCID de compartimento, o relacionamento de confiança da política confiará em todas as instâncias do Autonomous Database no compartimento e poderá usar o mesmo ARN de atribuição para conceder acesso aos recursos da AWS a qualquer Autonomous Database no compartimento especificado. Além disso, 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ê definiu o ID Externo do relacionamento de confiança com 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 do relacionamento de confiança da atribuição para ser 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 do relacionamento de confiança da atribuição para ser 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 à esquerda 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 do relacionamento de confiança da atribuição para ser o OCID da Tenancy.

        O OCID da Tenancy está disponível na página de detalhes dela na Console do Oracle Cloud Infrastructure. Para localizar a página de detalhes da Tenancy, no menu de navegação à esquerda 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 maiúsculas. Se quiser fornecer o OCID em minúsculas, defina a condição "StringEqualsIgnoreCase" em vez de "StringEquals" no JSON quando editar o relacionamento 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 do 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 credencial do 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 do 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 as credenciais do 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;
    /

    Após você executar esse comando, adb_user terá privilégios para ativar as credenciais do 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 Procedimento ENABLE_PRINCIPAL_AUTH para obter mais informações.

  2. Consulte a view 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 por parte da AWS para que DBMS_CLOUD acesse os recursos da AWS.

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

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

Depois que o uso do ARN é ativado para a instância do Autonomous Database e o ARN é configurado pelo administrador da AWS, no Autonomous Database, você pode criar um objeto de credencial com parâmetros ARN.

O Autonomous Database cria e protege as credenciais do controlador que você usa para acessar os recursos da Amazon ao fornecer 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;
    /

    Essa 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 CREATE_CREDENTIAL Procedure.

  2. Use um procedimento DBMS_CLOUD para acessar um recurso da Amazon com as credenciais do 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 do ARN que você usa no Autonomous Database funcionam com o serviço de token da AWS que permite usar credenciais com base em atribuição temporária para acessar os recursos da AWS no Autonomous Database.

Quando um Administrador da AWS revogar as políticas, as atribuições ou o relacionamento de confiança, atualize as credenciais ou crie novas credenciais para acessar os recursos da AWS.

Execute as seguintes etapas para atualizar 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 do atributo external_id_type.
    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 Procedimento UPDATE_CREDENTIAL e Procedimento CREATE_CREDENTIAL para obter mais informações.