跨帳戶 IAM 許可 - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

跨帳戶 IAM 許可

您可以從另一個帳戶的叢集建立身分提供者,或使用鏈結的 AssumeRole 操作,設定跨帳戶 IAM 許可。在以下範例中,帳戶 A 擁有的 Amazon EKS 叢集支援服務帳戶的 IAM 角色。在該叢集上執行的 Pods 必須從帳戶 B 取得 IAM 許可。

範例 從另一個帳戶的叢集建立身分提供者

在此範例中,帳戶 A 將為帳戶 B 提供其叢集的 OpenID Connect (OIDC) 發行者 URL。帳戶 B 遵循 為您的叢集建立 IAM OIDC 提供者指派IAM角色給Kubernetes服務帳戶 中的指示,使用來自帳戶 A 叢集的 OIDC 發行者 URL。然後,叢集管理員會註釋帳戶 A 叢集中的服務帳戶,以使用帳戶 B (444455556666) 中的角色。

apiVersion: v1 kind: ServiceAccount metadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::444455556666:role/account-b-role
範例 使用鏈結的 AssumeRole 操作

在此範例中,帳戶 B 會建立 IAM 政策,並授予許可給帳戶 A 叢集中的 Pods。帳戶 B (444455556666) 將該政策連接至 IAM 角色,該角色有信任關係將 AssumeRole 許可授予帳戶 A (111122223333)。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "sts:AssumeRole", "Condition": {} } ] }

帳戶 A 使用信任政策建立角色,該政策會從使用叢集 OIDC 發行者位址建立的身分提供者取得憑證。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity" } ] }

帳戶 A 將政策連接到該角色,並給予以下許可來擔任帳戶 B 建立的角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::444455556666:role/account-b-role" } ] }

Pods 擔任帳戶 B 角色的應用程式碼使用兩個設定檔:account_b_roleaccount_a_roleaccount_b_role 描述檔使用 account_a_role 描述檔作為其來源。對於 AWS CLI,~/.aws/config檔案類似下列內容。

[profile account_b_role] source_profile = account_a_role role_arn=arn:aws:iam::444455556666:role/account-b-role [profile account_a_role] web_identity_token_file = /var/run/secrets/eks.amazonaws.com/serviceaccount/token role_arn=arn:aws:iam::111122223333:role/account-a-role

若要為其他 AWS SDK 指定鏈結的設定檔,請參閱您正在使用之 SDK 的說明文件。如需詳細資訊,請參閱建置在其上的工具 AWS