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

5 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. Como posso conceder esse acesso sem armazenar credenciais na instância?

Resolução

Observação: as etapas para conceder acesso à instância a um bucket do Amazon S3 são semelhantes à concessão de acesso a outros recursos da AWS em outra conta.

Siga estas etapas para conceder a uma instância do Amazon EC2 na Conta A acesso a um bucket em outra conta (Conta B).

Na Conta B, crie um perfil do IAM

1.    Faça login no Console de Gerenciamento da AWS com a Conta B.

2.    Abra o console do AWS Identity and Access Management (IAM).

3.    No painel de navegação, escolha Perfis.

4.    Escolha Criar perfil.

5.    Em Selecionar tipo de entidade confiável, escolha Outra conta da AWS.

6.    Em ID da conta, insira o ID da conta A.

7.    Escolha Avançar: Permissões.

8.    Anexe uma política ao perfil que delega o acesso ao Amazon S3. Por exemplo, essa política concede acesso para s3:GetObject em 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: você pode modificar a política do IAM com base nas permissões no nível do bucket e do objeto do Amazon S3 necessárias para seu caso de uso.

9.    Escolha Avançar: Adicionar etiquetas.

10.    Você pode adicionar etiquetas opcionais ao perfil. Ou você pode deixar os campos em branco e escolher Avançar: Revisar.

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

12.    Escolha Criar perfil.

Na Conta B, obtenha o ARN do perfil

1.    No painel de navegação do console do IAM, escolha Perfis.

2.    Escolha o perfil do IAM que você criou.

3.    Anote o valor listado para o ARN do perfil.

Na Conta A, crie outro perfil (perfil da instância) e anexe-o à instância

1.    Faça login no Console de Gerenciamento da AWS com a Conta A.

2.    Abra o console do IAM.

3.    No painel de navegação, escolha Perfis.

4.    Escolha Criar perfil.

5.    Em Selecionar tipo de entidade confiável, escolha Serviço da AWS.

6.    Em Escolher o serviço que usará esse perfil, escolha EC2.

7.    Escolha Avançar: Permissões.

8.    Escolha Avançar: Etiquetas.

9.    Você pode adicionar etiquetas opcionais ao perfil. Ou você pode deixar os campos em branco e escolher Avançar: Revisar.

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

11.    Escolha Criar perfil.

12.    Na lista de perfis, escolha o perfil que você acabou de criar.

13.    Escolha Adicionar política em linha e, em seguida, escolha a exibição JSON.

14.    Insira a política a seguir. Substitua arn:aws:iam::111111111111:role/ROLENAME pelo nome do recurso da Amazon (ARN) do perfil do IAM que você criou na Conta B.

{
	"Version": "2012-10-17",
	"Statement": [{
		"Effect": "Allow",
		"Action": "sts:AssumeRole",
		"Resource": "arn:aws:iam::111111111111:role/ROLENAME"
	}]
}

15.    Escolha Revisar política.

16.    Em Nome, insira um nome para a política.

17.    Escolha Criar política.

18.    Anexe o perfil do IAM (perfil de instância) à instância do Amazon EC2 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 Session Manager para se conectar às suas instâncias do EC2, deverá executar essas etapas tanto para o ec2-user quanto para o ssm-user.

1.    Conecte-se à instância do Amazon EC2. Para obter mais informações, consulte Conecte-se à sua instância do Linux ou Conecte-se à sua instância do Windows.

2.    Depois de se conectar à instância, verifique se o diretório já tem uma pasta chamada ~/.aws.

Para encontrar a pasta ~/.aws, execute o seguinte comando ls para listar o diretório:

ls -l ~/.aws

3.    Se você encontrar a pasta ~/.aws, vá para a próxima etapa. Se o diretório ainda não tiver uma pasta ~/.aws, crie a pasta executando o comando mkdir:

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. Substitua enterprofilename pelo nome do perfil que você anexou à instância. Em seguida, substitua arn:aws:iam::111111111111:role/ROLENAME pelo ARN do perfil que você criou na Conta B.

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

credential_source = Ec2InstanceMetadata

6.    Salve o arquivo.

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

Para verificar se o perfil da sua instância (perfil de instância) pode assumir o perfil na Conta B, execute o comando a seguir enquanto estiver conectado à instância. Substitua profilename pelo nome do perfil que você anexou à instância.

$aws sts get-caller-identity --profile profilename

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 B.

Verifique o acesso ao bucket do Amazon S3

Para verificar se sua instância pode acessar o bucket do Amazon S3, execute esse comando de lista enquanto estiver conectada à instância. Substitua profilename pelo nome do perfil que você anexou à instância.

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

Se sua instância conseguir acessar o bucket com êxito, você receberá uma resposta que lista o conteúdo do bucket, como esta:

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

Informações relacionadas

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

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos