タグに基づいて AWS リソースへの pods アクセス権を付与する - Amazon EKS

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

タグに基づいて AWS リソースへの pods アクセス権を付与する

EKS Pod Identity は、クラスター名、名前空間、サービスアカウント名などの属性を含むタグを各ポッドの一時認証情報に添付します。これらのロールセッションタグを使用すると、管理者は一致するタグに基づいて AWS リソースへのアクセスを許可することで、複数のサービスアカウントで機能する単一のロールを作成できます。ロールセッションタグのサポートを追加することで、お客様は同じ IAM ロールと IAM ポリシーを再利用しながら、クラスター間およびクラスター内のワークロード間のセキュリティ境界を厳しくすることができます。

例えば、次のポリシーはオブジェクトが EKS クラスターの名前でタグ付けされた場合に s3:GetObject アクションを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectTagging" ], "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/eks-cluster-name": "${aws:PrincipalTag/eks-cluster-name}" } } } ] }

EKS Pod Identity によって追加されたセッションタグのリスト

次のリストには、Amazon EKS による AssumeRole リクエストに追加されたタグのすべてのキーが含まれています。これらのタグをポリシーで使用するには、${aws:PrincipalTag/ の後に、例えば ${aws:PrincipalTag/kubernetes-namespace} などのキーを続けます。

  • eks-cluster-arn

  • eks-cluster-name

  • kubernetes-namespace

  • kubernetes-service-account

  • kubernetes-pod-name

  • kubernetes-pod-uid

アカウント間のコピー

EKS Pod Identity によって追加されるセッションタグはすべて推移的です。タグのキーと値は、ワークロードがロールを別のアカウントに切り替えるために使用するすべての AssumeRole アクションに渡されます。これらのタグを他のアカウントのポリシーで使用して、クロスアカウントシナリオでのアクセスを制限できます。詳細については、IAM ユーザーガイドの「セッションタグを使用したロールの連鎖」を参照してください。

カスタムタグ

EKS Pod Identity は、実行する AssumeRole アクションにカスタムタグを追加できません。ただし、IAM ロールに適用するタグは、常に同じ形式 (${aws:PrincipalTag/MyCustomTag} など、キーが続く ${aws:PrincipalTag/) で使用できます。

注記

sts:AssumeRole リクエストによってセッションに追加されたタグは、競合が発生した場合に優先されます。例えば、EKS が顧客ロールを引き継ぐときに Amazon EKS がセッションにキー eks-cluster-name と値 my-cluster を追加すると仮定します。また、値 my-own-cluster を含む IAM ロールに eks-cluster-name タグも追加しました。この場合は前者が優先され、eks-cluster-name タグの値は my-cluster になります。