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

Você pode usar os ADNs (Amazon Resource Names) para acessar recursos da AWS com o Autonomous AI 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 AI 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 AI 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 função para acessar recursos da AWS no Autonomous AI 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 AI 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 AI 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 AI Database

Antes de criar uma credencial usando um ARN no Autonomous AI 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 AI 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 AI 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 AI 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 AI Database usando uma credencial DBMS_CLOUD que você cria com parâmetros que identificam o ARN. O Autonomous AI Database cria e protege as credenciais principais que você usa 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 funções e políticas para o ARN que você usa com o Autonomous AI 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 AI Database: No Autonomous AI 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 AI 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 AI Database pode acessar 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 AI 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 AI 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 AI 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 do Autonomous AI 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 AI 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 AI 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 AI Database no compartimento e você poderá usar o mesmo ARN de atribuição para conceder acesso aos recursos da AWS a qualquer Autonomous AI 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 AI 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 AI 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 do Autonomous AI Database para Usar ARNs da Amazon para obter mais informações.

Executar Pré-requisitos do Autonomous AI 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 AI Database.

Por padrão, os serviços de credenciais ARN não são ativados no Autonomous AI 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 AI 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 AI 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

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

O Autonomous AI 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 AI 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 AI Database funcionam com o serviço de token da AWS que permite usar credenciais temporárias baseadas em atribuição para acessar recursos da AWS no Autonomous AI 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.