このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「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 によって追加されたセッションタグを無効にすることでサイズを縮小できます。これらのセッションタグを無効にするには、次の手順に従います。
-
Amazon EKS コンソール
を開きます。 -
左のナビゲーションペインで [クラスター] を選択し、次に修正するクラスターの名前を選択します。
-
[リモートアクセス] タブを選択してください。
-
[Pod Identity の関連付け] で、[関連付け ID] で変更する関連付け ID を選択し、[編集] を選択します。
-
[セッションタグ] で、[セッションタグを無効にする] を選択します。
-
[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
になります。