Предположим, у нас есть два аккаунта AWS: аккаунт A, аккаунт B и экземпляр ec2, работающий на аккаунте A.
aws ec2 describe-instances
работает должным образом для собственной учетной записи экземпляра без ~/.aws/credentials
файл с ролью экземпляра.
Моя цель - бежать aws ec2 describe-instances
для учетной записи B из этого экземпляра.
Следующая команда работает и выводит учетные данные:
$ aws sts assume-role --role-arn arn:aws:iam::012345678901:role/accountb-role --role-session-name test
Однако это не так:
$ aws ec2 describe-instances --profile AccountB
'aws_access_key_id'
~ / .aws / config
[default]
region = us-east-1
[profile AccountB]
role_arn = arn:aws:iam::012345678901:role/accountb-role
source_profile = default
Как я уже заметил, ~/.aws/credentials
не существует, поскольку экземпляр использует роль экземпляра для IAM.
Политика доверительных отношений accountb-role
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::012345678900:role/accounta-role"
},
"Action": "sts:AssumeRole"
}
]
}
встроенная политика экземпляра
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1490625590000",
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::012345678901:role/accountb-role"
]
}
]
}
Оба accounta-role
роль экземпляра и accountb-role
также есть в наличии ReadOnlyAccess
Политика IAM прилагается.
Если кто-то все еще интересуется ответом, вы должны сохранить учетные данные aws, чтобы иметь возможность использовать AccountB между этими вызовами:
aws sts assume-role --role-arn arn:aws:iam::012345678901:role/accountb-role --role-session-name test
<< сохраните aws_access_key_id, aws_secret_access_key, AWS_SESSION_TOKEN здесь >>
Затем вы звоните
aws configure --profile AccountB
чтобы убедиться, что вы настроили их. также, может ли срок действия AWS_SESSION_TOKEN истечь через некоторое время
aws ec2 describe-instances --profile AccountB
Эта статья подробно объясняет
На вашей панели IAM также есть возможность предоставить доступ пользователю IAM с несколькими учетными записями, что, похоже, вы ищете.
http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html