

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

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

# Amazon EKS Pod 実行 IAM ロール
<a name="pod-execution-role"></a>

Pod を AWS Fargate インフラストラクチャで実行するには、Amazon EKS Pod 実行ロールが必要になります。

クラスターが AWS Fargate インフラストラクチャ上で Pod を作成する場合は、Fargate インフラストラクチャ上で実行されているコンポーネントがユーザーに代わって AWS API を呼び出す必要があります。これは、Amazon ECR からコンテナイメージをプルしたり、ログを他の AWS サービスにルーティングしたりするなどのアクションを実行できるようにするためです。Amazon EKS の Pod 実行ロールにより、これらを行うための IAM アクセス許可が付与されます。

Fargate プロファイルを作成するときは、プロファイルを使用して Fargate インフラストラクチャで Amazon EKS コンポーネントを実行できるように、Pod 実行ロールを指定する必要があります。このロールは、承認のためにクラスターの Kubernetes [ロールベースのアクセス制御](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) に追加されます。これにより、Fargate インフラストラクチャで実行されている `kubelet` が Amazon EKS クラスターに登録され、クラスター内でノードとして表示されるようになります。

**注記**  
Fargate プロファイルには、Amazon EC2 ノードグループとは異なる IAM ロールが必要です。

**重要**  
Fargate Pod で実行されているコンテナは、Pod 実行ロールに関連付けられた IAM アクセス許可を引き受けることはできません。Fargate Pod 内のコンテナに他の AWS サービスへのアクセス許可を付与するには、[IAM ロールをサービスアカウントとして](iam-roles-for-service-accounts.md)使用する必要があります。

Fargate プロファイルを作成する前に、[AmazonEKSFargatePodExecutionRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSFargatePodExecutionRolePolicy.html) で IAM ロールを作成する必要があります。

## 正しく設定された既存の Pod 実行ロールをチェックする
<a name="check-pod-execution-role"></a>

次の手順を使用して、正しく設定された Amazon EKS の Pod 実行ロールがアカウントに既に存在しているかどうかをチェックします。「混乱した代理」のセキュリティ上の問題を回避するには、ロールが `SourceArn` に基づいてアクセスを制限することが重要です。必要に応じて実行ロールを変更し、他のクラスター上で Fargate プロファイルのサポートを含めることができます。

1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

1. 左のナビゲーションペインで、**[ロール]** を選択してください。

1. **[ロール]** ページで、ロールの一覧から **AmazonEKSFargatePodExecutionRole** を検索します。ロールが存在しない場合は、「[Amazon EKS での Pod 実行ロールの作成](#create-pod-execution-role)」を参照してロールを作成します。ロールが存在する場合は、そのロールを選択します。

1. **[AmazonEKSFargatePodExecutionRole]** ページで、次の操作を実行します。

   1. **[許可]** を選択してください。

   1. **AmazonEKSFargatePodExecutionRolePolicy** Amazon マネージドポリシーがロールにアタッチされていることを確認します。

   1. **[信頼関係]** を選択します。

   1. **[信頼ポリシーを編集]** を選択します。

1. **[信頼ポリシーを編集]** ページで、信頼関係に次のポリシーが含まれており、クラスター上で Fargate プロファイルの行が存在していることを確認します。そうである場合は、**[キャンセル]** を選択します。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Condition": {
            "ArnLike": {
               "aws:SourceArn": "arn:aws:eks:us-east-1:111122223333:fargateprofile/my-cluster/*"
            }
         },
         "Principal": {
           "Service": "eks-fargate-pods.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

   ポリシーは一致するが、クラスター上で Fargate プロファイルを指定する行が存在しない場合は、`ArnLike` オブジェクトの上部に次の行を追加します。*region-code* はクラスターがある AWS リージョンに、*111122223333* はアカウント ID に、*my-cluster* はクラスターの名前に置き換えます。

   ```
   "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*",
   ```

   ポリシーが一致しない場合は、前のポリシー全体をフォームにコピーして、**[ポリシーの更新]** を選択します。*region-code* を、クラスターのある AWS リージョンに置き換えます。アカウントで、すべての AWS リージョンで同じロールを使用する場合は、*region-code* を `*` に置き換えます。*111122223333* をアカウント ID に、*my-cluster* をクラスター名に置き換えます。アカウント内のすべてのクラスターに同じロールを使用する場合は、*my-cluster* を `*` に置き換えます。

## Amazon EKS での Pod 実行ロールの作成
<a name="create-pod-execution-role"></a>

クラスター用の Amazon EKS Pod 実行ロールをまだ作成していない場合は、AWS マネジメントコンソール または AWS CLI を使用して作成できます。

 AWS マネジメントコンソール   

1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

1. 左のナビゲーションペインで、**[ロール]** を選択してください。

1. **[ロール]** ページで、**[ロールの作成]** を選択してください。

1. **[信頼されたエンティティを選択]** ページで、以下の操作を実行してください：

   1. **[信頼するエンティティのタイプ]** で **[AWS サービス]** を選択します。

   1. [**他の AWS サービスのユースケース**] ドロップダウンリストから、[**EKS**] を選択します。

   1. **[EKS - Fargate Pod]** を選択します。

   1. [**次へ**] を選択します。

1. **[アクセス許可を追加]** ページで **[次へ]** を選択します。

1. **[名前を付けて、レビューし、作成する]** ページで、以下の操作を実行します。

   1. **[ロール名]** に、`AmazonEKSFargatePodExecutionRole` などのロールの一意の名前を入力します。

   1. **[タグの追加 (オプション)]** で、タグをキーバリューのペアとして添付して、メタデータをロールに追加します。IAM でのタグの使用に関する詳細については『*IAM ユーザーガイド*』の「[IAM リソースにタグを付ける](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)」を参照してください。

   1. [**ロールの作成**] を選択してください。

1. **[ロール]** ページで、ロールの一覧から **AmazonEKSFargatePodExecutionRole** を検索します。ロールを選択します。

1. **[AmazonEKSFargatePodExecutionRole]** ページで、次の操作を実行します。

   1. **[信頼関係]** を選択します。

   1. **[信頼ポリシーを編集]** を選択します。

1. **[信頼ポリシーを編集]** ページで、次の操作を実行します。

   1. 次の内容をコピーして、**[信頼ポリシーを編集]** フォームに貼り付けます。*region-code* を、クラスターのある AWS リージョンに置き換えます。アカウントで、すべての AWS リージョンで同じロールを使用する場合は、*region-code* を `*` に置き換えます。*111122223333* をアカウント ID に、*my-cluster* をクラスター名に置き換えます。アカウント内のすべてのクラスターに同じロールを使用する場合は、*my-cluster* を `*` に置き換えます。

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Condition": {
               "ArnLike": {
                  "aws:SourceArn": "arn:aws:eks:us-east-1:111122223333:fargateprofile/my-cluster/*"
               }
            },
            "Principal": {
              "Service": "eks-fargate-pods.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

   1. [**ポリシーの更新**] を選択してください。

 AWS CLI  

1. 次の内容をコピーして、`pod-execution-role-trust-policy.json` という名前のファイルに貼り付けます。*region-code* を、クラスターのある AWS リージョンに置き換えます。アカウントで、すべての AWS リージョンで同じロールを使用する場合は、*region-code* を `*` に置き換えます。*111122223333* をアカウント ID に、*my-cluster* をクラスター名に置き換えます。アカウント内のすべてのクラスターに同じロールを使用する場合は、*my-cluster* を `*` に置き換えます。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Condition": {
            "ArnLike": {
               "aws:SourceArn": "arn:aws:eks:us-east-1:111122223333:fargateprofile/my-cluster/*"
            }
         },
         "Principal": {
           "Service": "eks-fargate-pods.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Pod 実行 IAM ロールを作成します。

   ```
   aws iam create-role \
     --role-name AmazonEKSFargatePodExecutionRole \
     --assume-role-policy-document file://"pod-execution-role-trust-policy.json"
   ```

1. このロールに、必要な Amazon EKS 管理の IAM ポリシーをアタッチします。

   ```
   aws iam attach-role-policy \
     --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy \
     --role-name AmazonEKSFargatePodExecutionRole
   ```