Quero configurar o acesso entre contas a um perfil do AWS Identity and Access Management (AWS IAM) em outra conta da AWS.
Breve descrição
Importante: a AWS recomenda que você use perfis do IAM com credenciais temporárias para acesso entre contas, em vez de usuários do IAM com credenciais de longo prazo (chaves de acesso). Os perfis do IAM fornecem credenciais de segurança temporárias que são alternadas automaticamente, o que reduz os riscos de segurança associados às credenciais de longo prazo.
Para acessar os recursos de outra conta da AWS, estabeleça uma relação de confiança com um perfil do IAM. Essa abordagem usa a operação da API AssumeRole para obter credenciais de segurança temporárias.
Por exemplo, você deseja acessar a conta de destino a partir da conta de origem. Configure um perfil do IAM na conta de origem para assumir um perfil do IAM na conta de destino. Para obter mais informações sobre o acesso entre contas usando perfis do IAM, consulte Acesso a um usuário do IAM em outra Conta da AWS de sua propriedade.
Observação: também é possível usar o encadeamento de perfis para assumir um perfil de origem do IAM para um perfil de destino do IAM. O encadeamento de perfis funciona somente para acesso programático, como a AWS Command Line Interface (AWS CLI) ou da API. O encadeamento de perfis não pode ser usado pelo Console de gerenciamento da AWS.
Resolução
Observação: se você receber mensagens de erro ao executar comandos da AWS CLI, consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Para usar o IAM para acessar recursos em outra conta da AWS, conclua as seguintes ações.
Conta de origem
Conclua as etapas a seguir:
- Use o editor JSON para criar uma política do IAM que conceda permissão para assumir o perfil de destino:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::DESTINATION-ACCOUNT-ID:role/DESTINATION-ROLENAME"
]
}
]
}
Observação: substitua DESTINATION-ACCOUNT-ID e DESTINATION-ROLENAME por seus próprios valores.
- Anexe a política do IAM a SourceRole.
Conta de destino
Conclua as etapas a seguir:
- Crie um perfil do IAM no console.
- Crie uma política de confiança personalizada que permita que o perfil da conta de origem assuma esse perfil:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::SOURCE-ACCOUNT-ID:role/SOURCE-ROLENAME"
},
"Action": "sts:AssumeRole"
}
]
}
Observação: substitua SOURCE-ACCOUNT-ID e SOURCE-USERNAME por seus próprios valores.
- Anexe políticas de permissões a esse perfil que concedam acesso aos recursos específicos necessários na conta de destino.
Observação: se você não tiver acesso para criar e editar perfis do IAM, peça ajuda ao proprietário da conta para concluir o processo. É uma prática recomendada restringir o acesso à sua conta e aos recursos para que somente as entidades em quem você confia possam acessá-los.
É possível modificar essa política para permitir que várias de entidades de origem assumam vários perfis de destino, conforme necessário. Por exemplo, é possível alterar o valor de Entidade principal da política de confiança da conta de destino para "AWS": "SOURCE-ACCOUNT-ID". Isso permite que todas as entidades na conta de origem assumam o perfil da conta de destino, desde que tenham permissão para assumir perfis. Para obter mais informações, consulte Como especificar uma entidade principal e Criação ou edição da política.
Teste seu acesso
Para testar seu acesso, siga as instruções em Mudar de um usuário para um perfil do IAM (console) ou Alterar para um perfil do IAM (AWS CLI). Para obter mais informações, consulte Tutorial do IAM: Delegar acesso entre contas da AWS usando perfis do IAM.
Informações relacionadas
Acesso a recursos entre contas no IAM
Como faço para assumir um perfil do IAM usando a AWS CLI?
Como resolvo o erro "Has prohibited field Principal" que recebo quando crio ou atualizo uma política do IAM?
Como conceder acesso entre contas a objetos que estão em buckets do Amazon S3?
Como faço para resolver o erro "AccessDenied" ou "Invalid information" quando tento assumir um perfil do IAM entre contas?