タグに基づいてポッドに AWS リソースへのアクセス権を付与する - アマゾン EKS

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

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

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

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

タグ付きポリシーの例

以下は、対応するオブジェクトが EKS クラスター名でタグ付けされたときに s3:GetObject アクセス許可を付与する IAM ポリシーの例です。

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

セッションタグを有効または無効にする

EKS Pod Identity で、ロールを引き受けるときに事前定義されたセッションタグのセットを追加します。これらのセッションタグを使用すると、管理者は一致するタグに基づいて AWS リソースへのアクセスを許可することで、リソース間で機能する単一のロールを作成できます。

セッションタグを有効にする

セッションタグは EKS Pod Identity で自動的に有効になります。ユーザー側のアクションは必要ありません。デフォルトでは、EKS Pod Identity によって事前定義されたタグのセットがセッションにアタッチされます。ポリシーでこれらのタグを参照するには、${aws:PrincipalTag/ 構文の後にタグキーを使用します。例えば、${aws:PrincipalTag/kubernetes-namespace}

  • eks-cluster-arn

  • eks-cluster-name

  • kubernetes-namespace

  • kubernetes-service-account

  • kubernetes-pod-name

  • kubernetes-pod-uid

セッションタグを無効にする

AWS では、インラインセッションポリシー、管理ポリシー ARN、およびセッションタグが、個別の制限を持つひとまとめのバイナリ形式に圧縮されます。ひとまとめのバイナリ形式がサイズ制限を超過したことを示す PackedPolicyTooLarge エラーが表示された場合は、EKS Pod Identity によって追加されたセッションタグを無効にすることでサイズを縮小できます。これらのセッションタグを無効にするには、次の手順に従います。

  1. Amazon EKS コンソールを開きます。

  2. 左のナビゲーションペインで [クラスター] を選択し、次に修正するクラスターの名前を選択します。

  3. [リモートアクセス] タブを選択してください。

  4. [Pod Identity の関連付け] で、[関連付け ID] で変更する関連付け ID を選択し、[編集] を選択します。

  5. [セッションタグ] で、[セッションタグを無効にする] を選択します。

  6. [Save changes] (変更の保存) をクリックします。

アカウント間のコピー

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 になります。