

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

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

# IAM ユーザーおよびロールに Kubernetes API へのアクセスを付与する
<a name="grant-k8s-access"></a>

クラスターには Kubernetes API エンドポイントがあります。Kubectl はこの API を使用します。この API は、次の 2 種類の ID を使用して認証することができます。
+  **AWS Identity and Access Management (IAM) プリンシパル (ロールまたはユーザー)** — このタイプには IAM への認証が必要です。[IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ユーザーとして、または ID ソースから提供された認証情報を使用して、[フェデレーテッド ID](https://aws.amazon.com/identity/federation/) で AWS にサインインできます。IAM ロールを使用して前もって管理者により ID フェデレーションが設定されている場合、フェデレーティッド ID としてのみサインインできます。フェデレーションを使用して AWS にアクセスする場合、間接的に[ロールを引き受ける](https://docs.aws.amazon.com/IAM/latest/UserGuide/when-to-use-iam.html#security-iam-authentication-iamrole)ことになります。ユーザーがこのタイプの ID を使用すると、次のことが行われます。
  + ユーザーがクラスター上の Kubernetes オブジェクトを操作できるように Kubernetes アクセス許可を割り当てることができます。IAM プリンシパルにアクセス許可を割り当てて、クラスター上の Kubernetes オブジェクトにアクセスできるようにする方法の詳細については、「[EKS アクセスエントリを使用して Kubernetes へのアクセスを IAM ユーザーに許可する](access-entries.md)」を参照してください。
  + IAM アクセス許可を割り当てて、ユーザーが Amazon EKS API、AWS CLI、AWS CloudFormation、AWS マネジメントコンソール、または `eksctl` を使用して Amazon EKS クラスターとそのリソースを操作できるようにすることができます。詳細については、サービス認可リファレンスの「[Amazon Elastic Kubernetes Service で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)」を参照してください。
  + ノードは IAM ロールを引き受けることでクラスターに参加します。IAM プリンシパルを使用してクラスターにアクセスできます。プリンシパルは、Amazon EKS コントロールプレーンで実行される [AWS IAM Authenticator for Kubernetes](https://github.com/kubernetes-sigs/aws-iam-authenticator#readme) によって提供されます。
+  **独自の OpenID Connect (OIDC) プロバイダーのユーザー** — このタイプでは、[OIDC](https://openid.net/connect/) プロバイダーへの認証が必要です。Amazon EKS クラスターで独自の OIDC プロバイダーを設定する方法については、「[外部 OIDC プロバイダーを使用して Kubernetes へのアクセスをユーザーに許可する](authenticate-oidc-identity-provider.md)」を参照してください。ユーザーがこのタイプの ID を使用すると、次のことが行われます。
  + ユーザーがクラスター上の Kubernetes オブジェクトを操作できるように Kubernetes アクセス許可を割り当てることができます。
  + IAM アクセス許可を割り当てて、ユーザーが Amazon EKS API、AWS CLI、AWS CloudFormation、AWS マネジメントコンソール、または `eksctl` を使用して Amazon EKS クラスターとそのリソースを操作できるようにすることはできません。

クラスターでは両方のタイプの ID を使用できます。IAM の認証方法を無効にすることはできません。OIDC 認証は任意です。

## IAM アイデンティティと Kubernetes のアクセス許可を関連付ける
<a name="authentication-modes"></a>

[AWS IAM Authenticator for Kubernetes](https://github.com/kubernetes-sigs/aws-iam-authenticator#readme) はクラスターのコントロールプレーンにインストールされます。これにより、クラスター上の Kubernetes リソースへのアクセスを許可する [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) (IAM) プリンシパル (ロールとユーザー) が有効になります。次のいずれかの方法を使用して、IAM プリンシパルにクラスター上の Kubernetes オブジェクトへのアクセスを許可できます。
+  **アクセスエントリの作成** — クラスターが、クラスターの Kubernetes バージョンの「[前提条件](access-entries.md)」セクションに記載されているプラットフォームバージョンと同じかそれ以降の場合は、このオプションを使用することをお勧めします。

  *アクセスエントリ*を使用して、クラスター外から IAM プリンシパルの Kubernetes アクセス許可を管理します。クラスターへのアクセスの追加および管理には、EKS API、AWS コマンドラインインターフェイス、AWS SDK、AWS CloudFormation、および AWS マネジメントコンソール を使用できます。つまり、クラスターを作成したのと同じツールでユーザーを管理できるということです。

  開始するには、「[アクセスエントリを使用するように認証モードを変更する](setting-up-access-entries.md)」に従い、次に「[既存の aws-auth ConfigMap エントリをアクセスエントリに移行する](migrating-access-entries.md)」に従います。
+  **`aws-auth` `ConfigMap` へのエントリの追加** — クラスターのプラットフォームバージョンが「[前提条件](access-entries.md)」セクションに記載されているバージョンよりも前の場合は、このオプションを使用する必要があります。クラスターのプラットフォームバージョンが、クラスターの Kubernetes バージョンの「[前提条件](access-entries.md)」セクションに記載されているプラットフォームバージョンと同じかそれ以降で、`ConfigMap` にエントリを追加した場合は、それらのエントリをアクセスエントリに移行することをお勧めします。ただし、マネージド型ノードグループで使用される IAM ロールのエントリや Fargate プロファイルなど、Amazon EKS が `ConfigMap` に追加したエントリは移行できません。詳細については、「[IAM ユーザーおよびロールに Kubernetes API へのアクセスを付与する](#grant-k8s-access)」を参照してください。
  + `aws-auth` `ConfigMap` オプションを使用する必要がある場合は、`eksctl create iamidentitymapping` コマンドを使用してエントリを `ConfigMap` に追加できます。詳細については、`eksctl`ドキュメントの「[IAM ユーザーとロールの管理](https://eksctl.io/usage/iam-identity-mappings/)」を参照してください。

## クラスター認証モードを設定する
<a name="set-cam"></a>

各クラスターには*認証モード*があります。認証モードによって、IAM プリンシパルがクラスター上の Kubernetes オブジェクトにアクセスできるようにするために使用できる方法が決まります。認証モードは 3 つあります。

**重要**  
アクセス入力メソッドを一度有効にすると、無効にすることはできません。  
`ConfigMap` メソッドがクラスターの作成時に有効になっていない場合、後で有効にすることはできません。アクセスエントリの導入前に作成されたすべてのクラスターでは、`ConfigMap` メソッドが有効になっています。  
クラスターでハイブリッドノードを使用している場合は、`API`または `API_AND_CONFIG_MAP` クラスター認証モードを使用する必要があります。

 **クラスター内部の `aws-auth` `ConfigMap`**   
これは Amazon EKS クラスターのオリジナルの認証モードです。クラスターを作成した IAM プリンシパルは、`kubectl` を使用してクラスターにアクセスできる初期ユーザーです。初期ユーザーは、`aws-auth` `ConfigMap` のリストに他のユーザーを追加し、クラスター内の他のユーザーに影響を与えるアクセス許可を割り当てる必要があります。`ConfigMap` には管理するエントリがないため、これらの他のユーザーは初期ユーザーを管理したり削除したりできません。

 **`ConfigMap` とアクセスエントリの両方**   
この認証モードでは、両方の方法を使用して IAM プリンシパルをクラスターに追加できます。それぞれの方法には別々のエントリが保存されることに注意してください。例えば、AWS CLI からアクセスエントリを追加しても、`aws-auth` `ConfigMap` は更新されません。

 **アクセスエントリのみ**   
この認証モードでは、EKS API、AWS コマンドラインインターフェイス、AWS SDK、AWS CloudFormation、および AWS マネジメントコンソール を使用して IAM プリンシパルのクラスターへのアクセスを管理できます。  
各アクセスエントリには*タイプ*があり、プリンシパルを特定の名前空間に制限する*アクセススコープ*と、事前設定された再利用可能なアクセス許可ポリシーを設定する*アクセスポリシー*を組み合わせて使用できます。また、STANDARD タイプと Kubernetes RBAC グループを使用してカスタムアクセス許可を割り当てることもできます。


| 認証モード | 方法 | 
| --- | --- | 
|   `ConfigMap` のみ (`CONFIG_MAP`)  |   `aws-auth` `ConfigMap`   | 
|  EKS API と `ConfigMap` (`API_AND_CONFIG_MAP`)  |  EKS API、AWS コマンドラインインターフェイス、AWS SDK、AWS CloudFormation、AWS マネジメントコンソール、および `aws-auth` `ConfigMap` のアクセスエントリ   | 
|  EKS API のみ (`API`)  |  EKS API、AWS コマンドラインインターフェイス、AWS SDK、AWS CloudFormation、および AWS マネジメントコンソール のアクセスエントリ   | 

**注記**  
Amazon EKS Auto Mode にはアクセスエントリが必要です。