Ir para o conteúdo

Como posso conceder à minha instância do Amazon EC2 acesso a um bucket do Amazon S3 em outra conta da AWS?

6 minuto de leitura
0

Quero usar uma instância do Amazon Elastic Compute Cloud (Amazon EC2) para acessar meu bucket do Amazon Simple Storage Service (Amazon S3) em outra conta da AWS.

Resolução

Para conceder acesso entre contas de uma instância do EC2 para um bucket do S3, configure uma relação de confiança entre duas contas da AWS. Use os perfis do AWS Identity and Access Management (AWS IAM) para criar a relação. Na conta do proprietário do bucket, crie um perfil que conceda permissões do S3. Na conta do proprietário da instância do EC2, crie um perfil que possa assumir o perfil do proprietário do bucket para acessar o bucket.

Crie um perfil a partir da conta do proprietário do bucket

Para criar um perfil do Identity and Access Management (IAM) na conta do proprietário do bucket, conclua as etapas a seguir:

  1. Use a conta do proprietário do bucket para fazer login no Console de gerenciamento da AWS.

  2. Abra o console do IAM.

  3. No painel de navegação, clique em Perfis e depois Criar perfil.

  4. Em Tipo de entidade confiável, selecione Conta da AWS.

  5. Selecione Outra conta da AWS e, em seguida, insira o ID da conta do proprietário da instância do EC2.
    Observação: não selecione Exigir ID externo ou Exigir MFA, a menos que seus requisitos de segurança exijam essas opções.

  6. Clique em Avançar.

  7. Anexe uma política do IAM ao perfil que delega acesso ao Amazon S3 e, em seguida, selecione Avançar. Por exemplo, a política do IAM a seguir concede o acesso s3:GetObject a objetos armazenados no bucket:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
                    "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
                ]
            }
        ]
    }

    Observação: substitua DOC-EXAMPLE-BUCKET pelo nome do seu bucket. Além disso, modifique a política do IAM com base nas permissões em nível de objeto e de bucket do Amazon S3 que são necessárias para o seu caso de uso.

  8. Em Nome do perfil, insira um nome para o perfil.

  9. (Opcional) Adicione tags ao perfil.

  10. Selecione Criar perfil.

Na conta do proprietário do bucket, encontre o nome do recurso da Amazon (ARN) do perfil do IAM

Para localizar o ARN do perfil do IAM, conclua as etapas a seguir:

  1. No painel de navegação do console do IAM, clique em Perfis.
  2. Selecione o perfil do IAM que você criou.
  3. Anote o valor listado em ARN do perfil.

Na conta do proprietário da instância do EC2, crie outro perfil e anexe-o à instância

Para criar outro perfil de instância da conta do proprietário da instância do EC2 e anexá-lo à instância, conclua as etapas a seguir:

  1. Use a conta do proprietário da instância do EC2 para fazer login no Console de gerenciamento da AWS.
  2. Abra o console do IAM.
  3. No painel de navegação, clique em Perfis e depois Criar perfil.
  4. Em Tipo de entidade confiável, selecione Serviço da AWS.
  5. Em Serviço ou caso de uso, clique em EC2 e, em seguida, selecione seu caso de uso.
  6. Clique em Avançar.
  7. Na página Adicionar permissões, selecione Avançar.
  8. Em Nome do perfil, insira um nome para o perfil.
  9. (Opcional) Adicione tags ao perfil.
  10. Selecione Criar perfil.
  11. Na lista de perfis, selecione o perfil criado.
  12. Em Adicionar permissões, selecione Criar política em linha.
  13. Em Editor de políticas, selecione JSON e, em seguida, insira a seguinte política:
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111111111111:role/ROLENAME"
    }]
}

Observação: substitua arn:aws:iam::111111111111:role/ROLENAME pelo ARN do perfil do IAM que você criou na conta do proprietário do bucket.

  1. Clique em Avançar.
  2. Em Nome, insira um nome para a política e, em seguida, selecione Criar política.
  3. Anexe o perfil do IAM à instância que você usa para acessar o bucket do Amazon S3.

Na instância do Amazon EC2, crie um perfil para o perfil no arquivo de configuração da CLI

Observação: se você usa SSH e Gerenciador de Sessões para se conectar às suas instâncias, deve realizar essas etapas tanto para o ec2-user quanto para o ssm-user. O Gerenciador de Sessões é uma ferramenta dentro do AWS Systems Manager.

Para criar um perfil para o perfil no arquivo de configuração da CLI a partir da instância, conclua as etapas a seguir:

  1. Conecte-se à instância. Para obter mais informações, consulte Conectar-se à instância do Linux usando SSH ou Conectar-se à instância do Windows usando RDP.

  2. Para verificar se o diretório já tem uma pasta chamada ~/.aws, execute o seguinte comando ls para listar o diretório da instância:

    ls -l ~/.aws
  3. Se você encontrar a pasta ~/.aws, vá para a próxima etapa. Se você não encontrar uma pasta ~/.aws, execute o seguinte comando mkdir para criar a pasta:

    mkdir ~/.aws/
  4. Na pasta ~/.aws, use um editor de texto para criar um arquivo. Nomeie o arquivo config.

  5. No arquivo, insira o texto a seguir para definir um perfil para o perfil:

    [profile enterprofilename]
    role_arn = arn:aws:iam::111111111111:role/ROLENAME
    credential_source = Ec2InstanceMetadata

    Observação: substitua enterprofilename pelo seu valor. Substitua arn:aws:iam::111111111111:role/ROLENAME pelo ARN do perfil que você criou na conta do proprietário do bucket.

  6. Salve o arquivo.

Verifique se o perfil de instância pode assumir o perfil

Para verificar se o perfil da sua instância pode assumir o perfil na conta do proprietário do bucket, conecte-se à instância e execute o seguinte comando:

aws sts get-caller-identity --profile profilename

Observação: substitua profilename pelo nome do perfil que você anexou à instância.

O comando retorna uma resposta semelhante à seguinte:

"Account": "11111111111",
"UserId": "AROAEXAMPLEID:sessionName",
"Arn": "arn:aws:sts::111111111111:assumed-role/ROLENAME/sessionName"

Confirme se o valor de “Arn” corresponde ao ARN do perfil que você criou na conta do proprietário do bucket.

Verifique o acesso ao bucket do Amazon S3

Para verificar se sua instância pode acessar o bucket do S3, conecte-se à instância e execute o seguinte comando list:

aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile profilename

Observação: substitua DOC-EXAMPLE-BUCKET pelo nome do seu bucket e substitua profilename pelo nome que você configurou no arquivo de configuração.

Se a sua instância puder acessar o bucket com êxito, você receberá uma resposta semelhante à seguinte:

PRE Hello/
2018-08-15 16:16:51 89 index.html

Informações relacionadas

Tutorial do IAM: Delegar acesso entre contas da AWS usando perfis do IAM

AWS OFICIALAtualizada há 4 meses