本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 IRSA 驗證至另一個帳戶
您可以透過從另一個帳戶的叢集建立身分提供者或使用鏈結AssumeRole
操作來設定跨帳戶 IAM 許可。在下列範例中,帳戶 A 擁有支援服務帳戶 IAM 角色的 Amazon EKS 叢集。Pods 在該叢集上執行的 必須從帳戶 B 取得 IAM 許可。
範例 從另一個帳戶的叢集建立身分提供者
在此範例中,帳戶 A 提供帳戶 B 來自其叢集的 OpenID Connect (OIDC) 發行者 URL。帳戶 B 遵循為叢集建立 IAM OIDC 叢集的 提供者建立 IAM OIDC提供者和從帳戶 A 叢集指派 IAM 角色至 Kubernetes 服務帳戶使用 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 政策,具有授予 的許可 Pods 在帳戶 A 的叢集中。帳戶 B (444455556666
) 將該政策連接至具有信任關係的 IAM 角色,該信任關係允許帳戶 A 的AssumeRole
許可 (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_role
和 account_a_role
。account_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
若要指定 other AWS SDKs 的鏈結設定檔,請參閱您正在使用的 SDK 文件。如需詳細資訊,請參閱要建置的工具 AWS