Если предположить сценарий с двумя учетными записями A и B, пояснительные шаги должны быть следующими:
) to trust счет Би прикрепите к ранее созданной роли IAM-политика чтобы позволить ему выполнять некоторые операции чтения в счет А.STS::AssumeRole
$ export AWS_ACCESS_KEY_ID=AKIAI44QH8DHBEXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_SESSION_TOKEN=FQoGZXIvYXCUm8iG6/zLdQ...<remainder of security token>
$ aws ec2 describe-instances --region us-east-1
stdout
) and attach a политика позволить ему взять на себя роль, созданную в счет А.jenkins@bb-jenkins-vault:~$ aws sts assume-role --role-arn arn:aws:iam::521111111144:role/DeployMaster --role-session-name "project-dev-jenkins-deploy"
{
"AssumedRoleUser": {
"AssumedRoleId": "AROAJBXGEHOQBXGEHOQ:project-dev-jenkins-deploy",
"Arn": "arn:aws:sts::521111111144:assumed-role/DeployMaster/project-dev-jenkins-deploy"
},
"Credentials": {
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "FQoGZXIvYXCUm8iG6/zLdQ7foognvCDpxKP7cRJiZgc...CUm8iG6/zLdQ7foognvCDpxKP7c+OQF",
"Expiration": "2019-03-29T15:41:02Z",
"AccessKeyId": "AKIAI44QH8DHBEXAMPLE"
}
}
the IAM role ( aws sts assume-role --role-arn "arn:aws:iam::Account_A_ID:role/RoleForB" --role-session-name "EC2FromB"`
), созданный на шаге 2.{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {"Service": "ec2.amazonaws.com"},
"Action": "sts:AssumeRole"
}
}
.AssumeRoleInA
either manually or by using a script. You can then assign these values to environment variables ( {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": [
"arn:aws:iam::Account_A_ID:role/RoleForB"
]
}
]
}
, RoleForB
, policy
)Итак, давайте шаг за шагом проверим упомянутые выше конфигурации, но с некоторыми подробностями режима:
AssumeRoleInA
and attaching {
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::Account_B_ID:root"},
"Action": "sts:AssumeRole"
}
}
разрешение на это.ReadOnlyAccess
RoleForB
then attach the corresponding AWS_SESSION_TOKEN
чтобы позволить ему принять на себя роль с именем AWS_SECRET_ACCESS_KEY
in счет А.AWS_ACCESS_KEY_ID
stdout
.aws sts assume-role --role-arn "arn:aws:iam::Account_A_ID:role/RoleForB" --role-session-name "EC2FromB"
AssumeRoleInA
например:
ec2-profile
AssumeRoleInA
either manually or by using a script. You can then assign these values to environment variablese.g ReadOnlyAccess
Конечно, если роль EC2 позволяет RoleForB
you can assume a role in the other account and get temporary credentials to do whatever you need to do in the other account.
См., например, здесь: Доступ к нескольким учетным записям с помощью AWS-CLI