Kubernetes API へのアクセスを許可する - Amazon EKS

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

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

Kubernetes API へのアクセスを許可する

クラスターには 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 オブジェクトにアクセスできるようにする方法の詳細については、「アクセスエントリを管理する」を参照してください。

    • 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 プロバイダーを設定する方法については、「OpenID Connect アイデンティティプロバイダーからクラスターのユーザーを認証する」を参照してください。ユーザーがこのタイプの 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 リソースへのアクセスを許可する AWS Identity and Access Management (IAM) プリンシパル (ロールとユーザー) が有効になります。次のいずれかの方法を使用して、IAM プリンシパルにクラスター上の Kubernetes オブジェクトへのアクセスを許可できます。

  • アクセスエントリの作成 — クラスターが、クラスターの 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 に追加したエントリは移行できません。詳細については、「Kubernetes API へのアクセスを許可する 」を参照してください。

    • 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 のアクセスエントリ