

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

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

# タグに基づいてポッドに AWS リソースへのアクセス権を付与する
<a name="pod-id-abac"></a>

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

## タグ付きポリシーの例
<a name="_sample_policy_with_tags"></a>

以下は、対応するオブジェクトが 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}"
                }
            }
        }
    ]
}
```

## セッションタグを有効または無効にする
<a name="pod-id-abac-tags"></a>

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

### セッションタグを有効にする
<a name="_enable_session_tags"></a>

セッションタグは 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` 

### セッションタグを無効にする
<a name="_disable_session_tags"></a>

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

1. [Amazon EKS コンソール](https://console.aws.amazon.com/eks/home#/clusters) を開きます。

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

1. **[アクセス]** タブを選択します。

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

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

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

## アカウント間のコピー
<a name="pod-id-abac-chaining"></a>

EKS Pod Identity によって追加されるセッションタグはすべて*推移的*です。タグのキーと値は、ワークロードがロールを別のアカウントに切り替えるために使用するすべての `AssumeRole` アクションに渡されます。これらのタグを他のアカウントのポリシーで使用して、クロスアカウントシナリオでのアクセスを制限できます。詳細については、「*IAM ユーザーガイド*」の「[セッションタグを使用したロールの連鎖](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining)」を参照してください。

## カスタムタグ
<a name="pod-id-abac-custom-tags"></a>

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