本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
切換到IAM角色 (AWS CLI)
角色會指定您可以用來存取的一組權限 AWS 您需要的資源。從這個意義上講,它類似於中的用戶 AWS Identity and Access Management(IAM)。當您以使用者身分登入時,您將取得一組特定的許可。不過,您不登入角色,但以使用者身分登入後,就可以切換角色。這會暫時擱置了原始使用者許可,而不是為您提供指派給該角色的許可。該角色可以在您自己的帳戶或任何其他 AWS 帳戶。 有關角色、其優點以及如何建立和配置角色的詳細資訊IAM 角色,請參閱和IAM角色建立。要了解在擔任角色時使用的各種方法,請參閱 假定角色的方法。
重要
您的IAM使用者權限和您假設的任何角色都不是累積的。每次只有一組許可是作用中。當您擔任角色時,您會暫時放棄以前的使用者或角色許可,並使用指派給該角色的許可。當您退出角色後,您的使用者許可會自動恢復。
您可以使用角色來運行 AWS CLI 指令,當您以IAM使用者身分登入時。您也可以使用角色來執行 AWS CLI 當您以已使用角色的外部驗證使用者 (SAML或 OIDC) 身分登入時執行命令。此外,您可以使用角色來執行 AWS CLI 從 Amazon EC2 執行個體內透過其執行個體設定檔連接到角色的命令。當您登入時,您無法擔任角色 AWS 帳戶根使用者.
角色鏈結 – 您也可以使用角色鏈結,以使用角色的許可來存取第二個角色。
在預設情況下,您的角色工作階段持續一小時。當您使用assume-role*
CLI作業假設此角色時,您可以指定duration-seconds
參數的值。此值的範圍可以從 900 秒 (15 分鐘) 到角色的最大工作階段持續時間設定的值。如果在主控台中切換角色,您工作階段的持續時間會限制為最多一小時。若要了解如何檢視角色的最大值,請參閱 更新角色的工作階段持續時間上限。
如果使用角色鏈結時,則工作階段持續時間最多限制為一小時。如果您隨後使用 duration-seconds
參數提供大於一小時的值,則操作會失敗。
範例案例:切換到生產角色
想像一下,您是在開發環境中工作的IAM用戶。在這個案例中,您偶爾需要使用指令行中的生產環境 AWS CLI
注意
基於安全考量,管理員可以檢閱 AWS CloudTrail 日誌以了解誰在中執行了操作 AWS。 當您擔任角色時,系統管理員可能會要求您指定來源身分識別或角色工作階段名稱。如需詳細資訊,請參閱 sts:SourceIdentity 和 sts:RoleSessionName。
若要切換到生產角色 (AWS CLI)
-
如果您從未使用過 AWS CLI,然後您必須先設定您的預設設定CLI檔。打開命令提示符並設置 AWS CLI 安裝以使用來自您的使用IAM者或同盟角色的存取金鑰。如需詳細資訊,請參閱配置 AWS Command Line Interface 中的 AWS Command Line Interface 使用者指南。
執行 aws configure 命令,如下所示:
aws configure
當出現提示時,請提供下列資訊:
AWS Access Key ID [None]:
AWS Secret Access Key [None]:AKIAIOSFODNN7EXAMPLE
Default region name [None]:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default output format [None]:us-east-2
json
-
在 Unix 或 Linux
.aws/config
檔案中,或在 WindowsC:\Users\USERNAME\.aws\config
檔案中建立角色的新描述檔。下列範例會建立稱為prodaccess
的描述檔,以切換到
帳戶中的角色ProductionAccessRole
123456789012
。您可以ARN從建立角色的帳戶管理員取得角色。呼叫此設定檔時, AWS CLI 使用的認證來source_profile
要求角色的認證。因此,做為source_profile
參考的身分必須具有sts:AssumeRole
中指定角色的role_arn
許可。[profile prodaccess] role_arn = arn:aws:iam::
123456789012
:role/ProductionAccessRole source_profile = default -
創建新配置文件後,任何 AWS CLI 指定參數的命令
--profile prodaccess
會在附加至IAM角色 (ProductionAccessRole
而非預設使用者) 的權限下執行。aws iam list-users --profile prodaccess
如果分配給 enable 的權限列出了
ProductionAccessRole
當前用戶,則此命令起作用 AWS 帳戶。 -
若要傳回原始憑證授予的許可,請執行不帶
--profile
參數的命令。所以此 AWS CLI 恢復為使用您在中配置的默認配置文件中步驟 1的身份證明。
如需詳細資訊,請參閱 AWS Command Line Interface 使用者指南。
範例案例:允許執行個體描述檔角色來切換到另一個帳戶中的角色
想像一下,你正在使用兩個 AWS 帳戶,並且您希望允許在 Amazon EC2 實例上運行的應用程序運行 AWS CLI111111111111
。該執行個體包含 abcd
執行個體描述檔角色,該角色會允許應用程式在相同 111111111111
帳戶中對 amzn-s3-demo-bucket1
儲存貯體執行唯讀 Amazon S3 任務。不過,也必須允許應用程式擔任 efgh
跨帳戶角色來在帳戶 222222222222
中執行任務。若要這麼做,abcd
EC2執行個體設定檔角色必須具有下列權限原則:
帳戶 111111111111 abcd
角色許可政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Sid": "AllowIPToAssumeCrossAccountRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/efgh" } ] }
假設 efgh
跨帳戶角色允許在相同 222222222222
帳戶中對 amzn-s3-demo-bucket2
儲存貯體的唯讀 Amazon S3 任務。若要執行此操作,efgh
跨帳戶角色必須有以下許可政策:
帳戶 222222222222 efgh
角色許可政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket2/*", "arn:aws:s3:::amzn-s3-demo-bucket2" ] } ] }
efgh
角色必須允許 abcd
執行個體設定檔角色擔任該角色。若要執行此操作,efgh
角色必須有以下信任政策:
帳戶 222222222222 efgh
角色信任政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "efghTrustPolicy", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"} } ] }
然後運行 AWS CLI 帳戶中的命令222222222222
,您必須更新CLI配置文件。將efgh
角色識別為「設定檔」,並將abcd
EC2執行個體設定檔角色識別為 AWS CLI
組態檔案。然後,您的CLI命令將以efgh
角色的權限運行,而不是原始abcd
角色。
注意
出於安全目的,您可以使用 AWS CloudTrail 審核帳戶中角色的使用情況。若要區分 CloudTrail 記錄中不同主參與者使用角色時的角色工作階段,您可以使用角色工作階段名稱。當 AWS CLI 假設代表使用者的角色,如本主題所述,角色工作階段名稱會自動建立為AWS-CLI-session-
。這裡 nnnnnnnn
nnnnnnnn
是一個整數,表示 Unix 紀元時間
允許EC2執行個體設定檔角色切換為跨帳戶角色 (AWS CLI)
-
您不需要設定預設設定CLI檔。相反地,您可以從EC2執行個體設定檔中繼資料載入認證。在
.aws/config
檔案中為角色建立新的設定檔。下列範例會建立instancecrossaccount
的描述檔,以切換到
帳戶中的角色efgh
222222222222
。呼叫此設定檔時, AWS CLI 使用EC2執行個體設定檔中繼資料的認證來要求角色的認證。因此,EC2執行個體設定檔角色必須擁有在中指定之角色的sts:AssumeRole
權限role_arn
。[profile instancecrossaccount] role_arn = arn:aws:iam::
222222222222
:role/efgh credential_source = Ec2InstanceMetadata -
創建新配置文件後,任何 AWS CLI 指定參數的命令在附加到帳戶中的
efgh
角色的權限下--profile instancecrossaccount
運行222222222222
。aws s3 ls amzn-s3-demo-bucket2 --profile instancecrossaccount
如果指派給
efgh
角色的權限允許列出目前的使用者,則此命令有效 AWS 帳戶. -
若要返回帳戶中的原始EC2執行個體設定檔權限
111111111111
,請執行不含--profile
參數的CLI命令。
如需詳細資訊,請參閱 AWS Command Line Interface 使用者指南。