我正在为一家拥有多个 aws 账户的公司签约。他们授予我登录账户的访问权限,我在 Web 控制台中将“角色切换”到我工作的项目账户。在 Web GUI 中,它可以正常工作。
我该如何做同样的事情aws-cli
?我只有登录帐户的访问密钥,没有权限创建用户和访问项目帐户中的密钥。这可能吗?
答案1
当然有可能!
假设你已经登录账户中的凭证~/.aws/credentials
,可能是这样的:
~ $ cat ~/.aws/credentials
[customer-login]
aws_access_key_id = AKIABCDEFGHJKLMNOPQR
aws_secret_access_key = ZxCvBnMaSdFgHjKlQwErTyUiOp
您需要做的就是添加另一个配置文件,~/.aws/credentials
该配置文件将使用上述配置文件来切换账户到您的项目帐户角色。您还需要项目帐户角色 ARN- 您可以在 Web 控制台中找到我是->角色切换到项目帐户。假设项目帐号是 123456789012...
[customer-project]
role_arn = arn:aws:iam::123456789012:role/your-project-role-name # << Change this
source_profile = customer-login
完成这些之后你就可以测试它是否有效:
~ $ aws --profile customer-project sts get-caller-identity
{
"Account": "123456789012",
"UserId": "AROA1B2C3D4E5F6G7H8I:botocore-session-1538120713",
"Arn": "arn:aws:sts::123456789012:assumed-role/your-project-role-name/botocore-session-1538120713"
}
如您所见,您现在位于项目帐户中,帐户 ID 为 123456789012。
如果您想要始终使用此配置文件,aws-cli
您可以这样做:
~ $ export AWS_DEFAULT_PROFILE=customer-project
~ $ aws sts get-caller-identity
... will be the same output as above, even without specifying --profile ...
欲了解更多信息,请查看此帖子:https://aws.nz/best-practice/cross-account-access-with-aws-cli/
另请检查: