Amazon-Web-Services

如何在 aws-cli 中“切換角色”?

  • December 3, 2021

我正在與一家擁有多個 AWS 賬戶的公司簽約。他們允許我訪問登錄帳戶,我在 Web 控制台中“切換角色”到我工作的項目帳戶。在 web gui 中它可以工作。

我該怎麼做aws-cli?我只有登錄帳戶的訪問密鑰,我無權在項目帳戶中創建使用者和訪問密鑰。甚至可能嗎?

當然有可能!

假設您在 中獲得了登錄帳戶憑據~/.aws/credentials,可能是這樣的:

~ $ cat ~/.aws/credentials
[customer-login]
aws_access_key_id = AKIABCDEFGHJKLMNOPQR
aws_secret_access_key = ZxCvBnMaSdFgHjKlQwErTyUiOp

您需要做的就是添加另一個配置文件,該配置文件~/.aws/credentials將使用上述配置文件將帳戶切換到您的項目帳戶角色。您還需要 Project account Role ARN -切換到Project account後,您可以在**IAM -> Roles的 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/

還要檢查:

引用自:https://serverfault.com/questions/933078