このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
IRSA で別のアカウントに対して認証する
別のアカウントのクラスターから ID プロバイダーを作成するか、連鎖した AssumeRole
オペレーションを使用することで、クロスアカウントの IAM アクセス許可を設定できます。以下の例では、アカウント A がサービスアカウントの IAM ロールをサポートする Amazon EKS クラスターを所有しています。そのクラスターで実行されている Pods は、アカウント B から IAM アクセス許可を引き受ける必要があります。
例 別のアカウントのクラスターから ID プロバイダーを作成する
この例では、アカウント A はアカウント B にクラスターからの OpenID Connect (OIDC) 発行者 URL を提供します。アカウント B は、アカウント A のクラスターからの OIDC 発行者 URL を使用して、クラスターの IAM OIDC プロバイダーを作成する および Kubernetes サービスアカウントへの IAM ロールの割り当て の手順に従います。次に、クラスター管理者は、アカウント A のクラスターのサービスアカウントに、アカウント B (444455556666
) のロールを使用するように注釈を付けます。
apiVersion: v1 kind: ServiceAccount metadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::
444455556666
:role/account-b-role
例 連鎖された AssumeRole
オペレーションを使用する
この例では、アカウント B は、アカウント A のクラスター内の Pods に付与するアクセス許可を持つ IAM ポリシーを作成します。アカウント B (444455556666
) は、アカウント A (111122223333
) への AssumeRole
許可を付与する信頼関係を持つ IAM ロールにそのポリシーをアタッチします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
アカウント A は、クラスターの OIDC 発行者アドレスで作成された ID プロバイダーから認証情報を取得する信頼ポリシーを持つロールを作成します。
{ "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
" } ] }
アカウント B のロールを引き受ける Pods のアプリケーションコードは、account_b_role
と account_a_role
の 2 つのプロファイルを使用します。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
他の AWS SDK の連鎖されたプロファイルを指定するには、使用する SDK のドキュメントを参照してください。詳細については、「AWS で構築するツール