DEV Community

Alfredo Castro
Alfredo Castro

Posted on • Updated on

Criar IAM Role Cross-Account

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
3) Clique em "Create user".
Image description
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
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
6) Revise as informações e clique em "Create user".
Image description
7) Salve as informações de acesso e clique em "Return to users list".
Image description
8) Na tela de "Users", podemos ver o nosso usuário recém criado.
Image description

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
3) Clique em "Create role".
Image description
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
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
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
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
8) Clique nos dois quadradinhos para copiar o ARN da Role.
Image description

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
3) Clique no usuário criado na etapa 01.
Image description
4) Clique em "Add permissions" e em seguida clique em "Create inline policy".
Image description
5) Clique em "JSON" para alternar o Policy editor.
Image description
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"
  }
}
Enter fullscreen mode Exit fullscreen mode

Image description
7) Defina um nome para a Policy, revise as informações e clique em "Create policy".
Image description
8) Nesta tela podemos ver a Policy definida para o nosso usuário.
Image description

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

1) Acesse a URL de login da Console Web da AWS
2) Selecione "IAM user", digite o Account ID de 12 dígitos da conta A. Em seguida, clique em "Next".
Image description
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
(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
5) Clique em "Switch role".
Image description
6) Clique em "Switch role".
Image description
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
8) No canto superior direito da Console Web, podemos ver que assumimos a Role CrossAccount-RoleEC2 da conta B.
Image description

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

Top comments (0)