

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

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

# Amazon EKS クラスター の IAM ロール
<a name="cluster-iam-role"></a>

Amazon EKS クラスター IAM ロールはクラスターごとに必要です。Amazon EKS によって管理される Kubernetes クラスターはこのロールを使用してノードを管理し、[レガシークラウドプロバイダー](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/#legacy-cloud-provider)はこのロールを使用して Elastic Load Balancing によるロードバランサーをサービス用に作成します。

Amazon EKS クラスターを使用するには、事前に次の IAM ポリシーのいずれかを持つ IAM ロールを作成する必要があります。
+  [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html) 
+ カスタム IAM ポリシー。以下の最小限の許可では、Kubernetes クラスターがノードを管理することはできますが、[レガシークラウドプロバイダー](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/#legacy-cloud-provider)が Elastic Load Balancing によるロードバランサーを作成することはできません。カスタム IAM ポリシーには、少なくとも以下の許可が必要です。

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "ec2:CreateTags"
        ],
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
          "ForAnyValue:StringLike": {
            "aws:TagKeys": "kubernetes.io/cluster/*"
          }
        }
      },
      {
        "Effect": "Allow",
        "Action": [
          "ec2:DescribeInstances",
          "ec2:DescribeNetworkInterfaces",
          "ec2:DescribeVpcs",
          "ec2:DescribeDhcpOptions",
          "ec2:DescribeAvailabilityZones",
          "ec2:DescribeInstanceTopology",
          "kms:DescribeKey"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

**注記**  
2023 年 10 月 3 日より前は、各クラスターの IAM ロールには [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html) が必要でした。  
2020 年 4 月 16 日までは、[AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html) および [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html) が必須であり、ロールに推奨される名前は `eksServiceRole` でした。`AWSServiceRoleForAmazonEKS` のサービスにリンクされたロールにより、2020 年 4 月 16 日以降に作成されたクラスターに対しては、[AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html) ポリシーは必要なくなりました。

## 既存のクラスターロールの確認
<a name="check-service-role"></a>

次の手順を使用して、アカウントに Amazon EKS クラスターロールが既に存在しているかどうかが確認できます。

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

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

1. ロールのリストで `eksClusterRole` を検索します。`eksClusterRole` が含まれているロールが存在しない場合は、[Amazon EKS でのクラスターロールの作成](#create-service-role) を参照してロールを作成します。`eksClusterRole` が含まれているロールが存在する場合はこのロールを選択してアタッチされているポリシーを表示します。

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

1. **AmazonEKSClusterPolicy** 管理ポリシーがロールにアタッチされていることを確認します。ポリシーがアタッチされている場合、Amazon EKS クラスターロールは適切に設定されています。

1. **[Trust relationships]** (信頼関係）を 選択し、**[Edit trust policy]** (信頼ポリシーの編集）を選択してください。

1. 信頼関係に以下のポリシーが含まれていることを確認します。信頼関係が以下のポリシーと一致する場合、**[キャンセル]** を選択してください。信頼関係が一致しない場合、ポリシーを **[信頼ポリシーの編集]** ウィンドウにコピーし、**[ポリシーの更新]** を選択します。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

## Amazon EKS でのクラスターロールの作成
<a name="create-service-role"></a>

クラスターロールを作成するにはAWS マネジメントコンソール または AWS CLI を使用できます。

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

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

1. [**ロール**] を選択してから [**ロールの作成**] を選びます。

1. [**信頼できるエンティティタイプ**] の下で、[**AWS サービス**] を選択してください。

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

1. ユースケースに **[EKS - Cluster]** (EKS - クラスター）を 選択し、**[ 次へ]** (次へ）を 選択してください。

1. **[Add permissions]** (アクセス許可を追加する) タブで、**[Next]** (次へ) を選択します。

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

1. **[Description]** (説明） には`Amazon EKS - Cluster role` のような説明文を入力してください。

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

 AWS CLI  

1. 次の内容を {{cluster-trust-policy.jsonl}} という名前のファイルにコピーします。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. ロールを作成します。{{eksClusterRole}} は、任意の名前で置き換えることができます。

   ```
   aws iam create-role \
     --role-name eksClusterRole \
     --assume-role-policy-document file://"cluster-trust-policy.json"
   ```

1. 必要な IAM ポリシーをロールにアタッチします。

   ```
   aws iam attach-role-policy \
     --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \
     --role-name eksClusterRole
   ```