Criar IAM Role Cross-Account
Tags: aws, iam, security
Published: 2023-10-29 07:29:01

A Amazon Web Services (AWS) oferece uma ampla variedade de serviços e recursos poderosos para atender às necessidades de organizações em todo o mundo. No entanto, garantir que esses recursos estejam seguros e acessíveis apenas para as partes autorizadas é essencial. Para alcançar esse equilíbrio entre segurança e acessibilidade, a AWS fornece um mecanismo chamado IAM (Identity and Access Management), que permite definir e gerenciar permissões para usuários, grupos e recursos de maneira granular.

É uma prática recomendada pela AWS a utilização de várias contas para aprimorar a segurança, eficiência, controle de recursos e a segregação de ambientes.

Neste tutorial, abordaremos um cenário comum: a necessidade de conceder acesso a recursos da AWS em uma conta de destino a partir de uma conta de origem diferente. Isso é conhecido como "IAM Role Cross-Account". Essa configuração é útil em casos como compartilhamento de recursos entre equipes, ambientes de desenvolvimento e produção separados ou até mesmo entre organizações diferentes que colaboram na AWS.

## Pré-requisito:
 * Duas contas AWS, a conta A (origem - conta que requer acesso à conta de destino) será nossa conta principal onde iremos criar o usuário (IAM User) e a conta B (destino - conta com os recursos aos quais você deseja acessar) será a conta onde iremos criar a função (IAM Role) para que o nosso usuário da conta A assuma e tenha as permissões necessárias para administrar a conta B.

## Etapa 01 - Criar o usuário (Conta A)

1) Acesse a console AWS e procure pelo serviço "IAM".
2) No menu lateral a esquerda, clique em "Users".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k3m6zellkhjlhr6ldgxp.png)
3) Clique em "Create user".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k8lnkkij0elvezfg52ce.png)
4) Defina um username para o usuário, marque a opção "Provide user access to the AWS Management Console" para que o usuário tenha acesso via Console Web da AWS, marque a opção "I want to create an IAM user" para criar um usuário IAM. Se você deseja especificar uma senha personalizada, marque a opção "Custom password" e digite a senha. Por último, se desejar que o usuário redefina a senha assim que acessar o console, marque a opção "Users must create a new password at next sign-in" e clique em "Next".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xh8ldkmfnywc1bcp4pj3.png)
5) Nesta etapa, definimos as permissões para o usuário. Por enquanto, não iremos atribuir nenhuma permissão, apenas clique em "Next.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4k5s2qm7n5z55qujxunq.png)
6) Revise as informações e clique em "Create user".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b5v5vxi6yjrdsm70tyfc.png)
7) Salve as informações de acesso e clique em "Return to users list".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2g0l17y6mskuvfx7r3o1.png)
8) Na tela de "Users", podemos ver o nosso usuário recém criado.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q14hri9jygew0xovc7ze.png)

## Etapa 02 - Criar a IAM Role (Conta B)

1) Acesse a console AWS e procure pelo serviço "IAM".
2) No menu lateral a esquerda, clique em "Roles".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2mlgmaev4zxh4jqcsji9.png)
3) Clique em "Create role".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fgtivsp5vob6q17ig3bt.png)
4) Marque a entidade confiável como "AWS account", marque a opção "Another AWS account" e digite o Account ID de 12 digitos da conta A (você consegue visualizar o Account ID no passo 8 da etapa anterior), em seguida clique em "Next".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t18oddm6b2ihcha214ai.png)
5) Selecione as permissões que deseja conceder ao usuário da conta A. Neste exemplo, estamos concedendo a permissão "AmazonEC2FullAccess". O usuário da conta A que criamos terá permissão total para acessar os recursos EC2 na conta B. Em seguida, clique em "Next".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/givjykxynk7crei64vpe.png)
6) Defina um nome para a Role, revise as informações da entidade confiável (garanta que esteja com o Account ID da conta A) e as permissões corretas. Em seguida, clique em "Create role".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k84e6eihsspjucaqmuex.png)
7) Na tela de "Roles", podemos ver a nossa Role recém criado, clique nela para podermos copiar o ARN (iremos utilizar para a próxima etapa).
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ktzse33u3e3m6lk32usg.png)
8) Clique nos dois quadradinhos para copiar o ARN da Role.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pp5mlyxidlxo4gzbvpjz.png)

## Etapa 03 - Conceder acesso a Role da conta B via Inline Policy (Conta A)

1) Acesse a console AWS e procure pelo serviço "IAM".
2) No menu lateral a esquerda, clique em "Users".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hzl7ynl1kemavn76nqwg.png)
3) Clique no usuário criado na etapa 01.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4bjioeak1moyvu6lqqxb.png)
4) Clique em "Add permissions" e em seguida clique em "Create inline policy".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b8gxvntcwbkw1c7r7gft.png)
5) Clique em "JSON" para alternar o Policy editor.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m2mwykhk3mmh4q5lmfn5.png)
6) Adicione o seguinte JSON alterando o "Resource" para o ARN da Role criada na etapa 02. Em seguida, clique em "Next".

```
{
  "Version": "2012-10-17",
  "Statement": {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::XXXXXXXXXXXX:role/CrossAccount-RoleEC2"
  }
}
```
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vo2q81dqrbdaazo43ijy.png)
7) Defina um nome para a Policy, revise as informações e clique em "Create policy".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fy6n7a9gmahs2s8i2gwy.png)
8) Nesta tela podemos ver a Policy definida para o nosso usuário.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jz1lx0mjewmxa2sxhrxk.png)

## Etapa 04 - Executando o Switch role para trocar de conta (Conta A)

1) Acesse a URL de login da Console Web da AWS [](https://console.aws.amazon.com/)
2) Selecione "IAM user", digite o Account ID de 12 dígitos da conta A. Em seguida, clique em "Next".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ml678bf54ycsk9p3tx1w.png)
3) Confirme o Account ID da conta A, digite o username do usuário criado na etapa 01 e a senha que você definiu. Em seguida, clique em "Sign in".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hqusrp2yct81ihnjlmja.png)
(Obs: Caso tenha marcado a opção de redefinir a senha no primeiro login, a AWS irá solicitar que você defina uma nova senha para continuar, digite a nova senha e avance para o próximo passo).
4) Com o Console logado na conta A, clique no nome do usuário no canto superior direito.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/164zc4g4jp8niljw41rl.png)
5) Clique em "Switch role".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9zazj17yp58qvprd7ly.png)
6) Clique em "Switch role".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ufxtm30panqdgwz49622.png)
7) No campo "Account" digite o Account ID da conta B, no campo "Role" digite o nome da Role criada na etapa 02. Em seguida, clique em "Switch role".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9s3kmanfea9mnexkvgtd.png)
8) No canto superior direito da Console Web, podemos ver que assumimos a Role CrossAccount-RoleEC2 da conta B.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j2n4s4z6iitp9gl9s5a5.png)

## Etapa 05 - Testando as permissões (Conta B)

1) Após assumirmos a Role "CrossAccount-RoleEC2" da conta B, procure pelo serviço "EC2".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/66x9njdtqcscrw8g7rse.png)
(Obs: na imagem podemos ver que estamos com acesso a todas as informações do Dashboard do recurso EC2, se desejar, crie uma instância EC2 para testar a permissão)
2) Agora procure pelo serviço "S3".
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hhrghompem2k05yhgmz6.png)
(Obs: na imagem podemos ver imediatamente o erro "You don't have permissions to list buckets", a permissão que concedemos para o usuário foi apenas para o recurso "EC2")

Espero tê-lo ajudado! Se houver alguma dúvida, não hesite em deixar um comentário.