このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
IAM ユーザーおよびロールに Kubernetes APIs へのアクセスを付与する
クラスターには Kubernetes API エンドポイントがあります。Kubectl はこの API を使用します。この API は、次の 2 種類の ID を使用して認証することができます。
-
AWS Identity and Access Management (IAM) プリンシパル (ロールまたはユーザー) — このタイプには IAM への認証が必要です。IAM ユーザーとして、または ID ソースから提供された認証情報を使用して、フェデレーテッド ID
で AWS にサインインできます。IAM ロールを使用して前もって管理者により ID フェデレーションが設定されている場合、フェデレーティッド ID としてのみサインインできます。フェデレーションを使用して AWS にアクセスする場合、間接的にロールを引き受けることになります。ユーザーがこのタイプの ID を使用すると、次のことが行われます。 -
ユーザーがクラスター上の Kubernetes オブジェクトを操作できるように Kubernetes アクセス許可を割り当てることができます。IAM プリンシパルにアクセス許可を割り当てて、クラスター上の Kubernetes オブジェクトにアクセスできるようにする方法の詳細については、「EKS アクセスエントリを使用して Kubernetes へのアクセスを IAM ユーザーに許可する」を参照してください。
-
IAM アクセス許可を割り当てて、ユーザーが Amazon EKS API、AWS CLI、AWS CloudFormation、AWS Management Console、または
eksctl
を使用して Amazon EKS クラスターとそのリソースを操作できるようにすることができます。詳細については、サービス認証リファレンスの「Amazon Elastic Kubernetes Service で定義されるアクション」を参照してください。
-
ノードは IAM ロールを引き受けることでクラスターに参加します。IAM プリンシパルを使用してクラスターにアクセスできます。プリンシパルは、Amazon EKS コントロールプレーンで実行される AWS IAM Authenticator for Kubernetes
によって提供されます。
-
-
独自の OpenID Connect (OIDC) プロバイダーのユーザー — このタイプでは、OIDC
プロバイダーへの認証が必要です。Amazon EKS クラスターで独自の OIDC プロバイダーを設定する方法については、「外部 OIDC プロバイダーを使用して Kubernetes へのアクセスをユーザーに許可する」を参照してください。ユーザーがこのタイプの ID を使用すると、次のことが行われます。 -
ユーザーがクラスター上の Kubernetes オブジェクトを操作できるように Kubernetes アクセス許可を割り当てることができます。
-
IAM アクセス許可を割り当てて、ユーザーが Amazon EKS API、AWS CLI、AWS CloudFormation、AWS Management Console、または
eksctl
を使用して Amazon EKS クラスターとそのリソースを操作できるようにすることはできません。
-
クラスターでは両方のタイプの ID を使用できます。IAM の認証方法を無効にすることはできません。OIDC 認証は任意です。
IAM アイデンティティと Kubernetes のアクセス許可を関連付ける
Kubernetes 用の AWS IAM Authenticator
-
アクセスエントリの作成 — クラスターが、クラスターの Kubernetes バージョンの「前提条件」セクションに記載されているプラットフォームバージョンと同じかそれ以降の場合は、このオプションを使用することをお勧めします。
アクセスエントリを使用して、クラスター外から IAM プリンシパルの Kubernetes アクセス許可を管理します。クラスターへのアクセスの追加および管理には、EKS API、AWS Command Line Interface、AWS SDK、AWS CloudFormation、および AWS Management Console を使用できます。つまり、クラスターを作成したのと同じツールでユーザーを管理できるということです。
開始するには、アクセスエントリを使用するように認証モードを変更する、次に 既存の aws-auth ConfigMap エントリをアクセスエントリに移行する に従います。
-
aws-auth
ConfigMap
へのエントリの追加 — クラスターのプラットフォームバージョンが「前提条件」セクションに記載されているバージョンよりも前の場合は、このオプションを使用する必要があります。クラスターのプラットフォームバージョンが、クラスターの Kubernetes バージョンの「前提条件」セクションに記載されているプラットフォームバージョンと同じかそれ以降で、ConfigMap
にエントリを追加した場合は、それらのエントリをアクセスエントリに移行することをお勧めします。ただし、マネージド型ノードグループで使用される IAM ロールのエントリや Fargate プロファイルなど、Amazon EKS がConfigMap
に追加したエントリは移行できません。詳細については、「IAM ユーザーおよびロールに Kubernetes APIs へのアクセスを付与する」を参照してください。-
aws-auth
ConfigMap
オプションを使用する必要がある場合は、eksctl create iamidentitymapping
コマンドを使用してエントリをConfigMap
に追加できます。詳細については、eksctl
ドキュメントの「IAM ユーザーとロールの管理」を参照してください。
-
クラスター認証モードを設定する
各クラスターには認証モードがあります。認証モードによって、IAM プリンシパルがクラスター上の Kubernetes オブジェクトにアクセスできるようにするために使用できる方法が決まります。認証モードは 3 つあります。
重要
アクセス入力メソッドを一度有効にすると、無効にすることはできません。
ConfigMap
メソッドがクラスターの作成時に有効になっていない場合、後で有効にすることはできません。アクセスエントリの導入前に作成されたすべてのクラスターでは、ConfigMap
メソッドが有効になっています。
- クラスター内部の
aws-auth
ConfigMap
-
これは Amazon EKS クラスターのオリジナルの認証モードです。クラスターを作成した IAM プリンシパルは、
kubectl
を使用してクラスターにアクセスできる初期ユーザーです。初期ユーザーは、aws-auth
ConfigMap
のリストに他のユーザーを追加し、クラスター内の他のユーザーに影響を与えるアクセス許可を割り当てる必要があります。ConfigMap
には管理するエントリがないため、これらの他のユーザーは初期ユーザーを管理したり削除したりできません。 ConfigMap
とアクセスエントリの両方-
この認証モードでは、両方の方法を使用して IAM プリンシパルをクラスターに追加できます。それぞれの方法には別々のエントリが保存されることに注意してください。例えば、AWS CLI からアクセスエントリを追加しても、
aws-auth
ConfigMap
は更新されません。 - アクセスエントリのみ
-
この認証モードでは、EKS API、AWS Command Line Interface、AWS SDK、AWS CloudFormation、および AWS Management Console を使用して IAM プリンシパルのクラスターへのアクセスを管理できます。
各アクセスエントリにはタイプがあり、プリンシパルを特定の名前空間に制限するアクセススコープと、事前設定された再利用可能なアクセス許可ポリシーを設定するアクセスポリシーを組み合わせて使用できます。また、STANDARD タイプと Kubernetes RBAC グループを使用してカスタムアクセス許可を割り当てることもできます。
[Authentication mode] (認証モード) | 方法 |
---|---|
ConfigMap のみ (CONFIG_MAP ) |
aws-auth
ConfigMap |
EKS API と ConfigMap (API_AND_CONFIG_MAP ) |
EKS API、AWS Command Line Interface、AWS SDK、AWS CloudFormation、AWS Management Console、および aws-auth ConfigMap のアクセスエントリ |
EKS API のみ (API ) |
EKS API、AWS Command Line Interface、AWS SDK、AWS CloudFormation、および AWS Management Console のアクセスエントリ |