エンティティの認証にのみ使用されます。システムを介して管理されます。https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/cluster-auth.htmlドキュメントには、「EKSを操作する権限があるか=(IAMの仕組み)」と「操作しようとしているIAMはどこまでKubernetesの権限が与えられているか(RBACの仕組み)」の2つの概念が登場しています。EKSを操作するには、そのIAMエンティティに「EKSを操作する権限」があり、尚且つ、そのIAMエンティティに対して「KubernetesのRBACの設定内で必要な操作権限が与えられている」必要があるということが把握できればいいと思います。AWSのフルアクセス権限を与えられたIAMユーザー(user-01)であっても、KubernetesのRBACの設定内でuser-01に何も権限が与えられていないと、user-01はKubernetesが絡むEKSの操作はできません。EKSクラスター作成の注意点EKSクラスターを作成する際、作成元は、「eksctlコマンドによる作成」と、「マネジメントコンソールからの作成」という2つに大別されると思います。(コマンドによる作成はeksctlをインストールしたEC2からの実行を前提としています。用いてEKSの操作をしなければなりません。!クラスター作成時にKubernetesのRBACの設定が自動的に行われるということとなります。初期構築時にRBACの設定を追加・変更できるのが、クラスターを作成したIAMエンティティのみになるということです。把握が重要になります。EKSクラスターを作成する際は、eksctlコマンドでEKSクラスターを作成する場合と、マネジメントコンソールからポチポチとやって作成する2パターンになると思います。このことを考慮に入れると、system:masters許可を持つIAMエンティティは以下のいずれかになることが想定されます。IAMのベストプラクティスでは、ユーザーではなくロールに許可を付与することが推奨されているため、本記事では、IAMロールを用いてEKSクラスターを作成する手順を紹介します。!IAMユーザーでEKSクラスターを作成した場合、作成者の異動や離任によってそのIAMユーザーが削除されてしまうと、デフォルトでsystem:masters許可を持つIAMエンティティが存在しないことになります。ConfigMapが破損してしまった場合、そのEKSを操作し、復旧できるのはEKSクラスターを作成したIAMエンティティだけです。IAMユーザーが削除されていると復旧不可となる可能性もあるため、こうした事態を避けるためにもIAMロールを用いたEKSクラスター作成が望ましいと思います。EC2などからeksctlコマンドで実行した場合でも基本的な考え方は変わらないので、操作が複雑になるマネジメントコンソールで作成した場合について整理します。マネジメントコンソールからEKSクラスターを作成するものの、実際のEKSの操作はEC2にeksctlやkubectlをインストールして行います。手順IAMロールのページに「コンソールでロールを切り替えるためのリンク」があるので、そのリンクにアクセスし、ロールの切り替えを実施します。IAMの設定IAMロール名は、iam-role-for-assumeです。Roleできるように設定します。}}このIAMポリシーをIAMユーザーにアタッチします。EKSクラスターの作成マネジメントコンソールよりEKSクラスターを作成します。(設定のパラメーターについては割愛します。)他のIAMエンティティにアクセス権を付与するkubectlとeksctlのインストールkubectlとeksctlが必要になるので、適当なEC2にkubectlをインストールしてそこから作業します。Manager経由での作業を想定しています。versionkubectlはEKSクラスターのkubectlバージョンに合わせたものを使用します。この例では1.28です。--clientkubeconfigの作成クラスターへのアクセスを設定するために使われるファイルを作成します。(eks:DescribeCluster)が必要です。/home/ssm-user/.kube/configと表示されます。IAMロールの引き受けこの状態でkubectlのコマンドを実行すると、エラーが表示されます。Roleする必要があります。AWSCLI-Session以下のAccessKeyId、SecretAccessKey、SessionTokenの部分を出力結果の値に置き換えてください。get-caller-identityを実行し、IAMロールの引き受けが成功しているか確認してください。"arn:aws:sts::111122223333:assumed-role/iam-role-for-assume/AWSCLI-Session"}sh-5.2$kubectlコマンドを実行すると、値が返ってきていることがわかります。10msh-5.2$他のIAMロールにEKSの権限を付与するEKSクラスターを作成したIAMロールを引き受け、EKSを操作できる状態になりました。これでは作業のたびにEKSクラスターを作成したIAMロールを引き受けなければなりません。このIAMロールでは、EKSクラスターに対し、system:masters許可が付与されており、場合によっては権限が大きすぎます。IAMエンティティ全てが、このIAMロールを引き受けるようにするということは、セキュリティ的にも問題があります。したがって、特定のIAMロールにEKSの権限を付与することが必要となるため、その設定を実施します。ConfigMapに設定を追加する必要があります。ConfigMapはクラスターを作成しただけだと存在しませんでした。configmap/aws-authでaws-auth自体を確認することもできます。configMapは、EKS上のノードグループの作成に合わせて作成されることが判明したので、まずはノードグループを作成します。手順マネジメントコンソール上から「ノードグループの追加」を選び、適当にノードグループを作成します。--region=us-east-1が成功します。(実行結果は省略します。)configmap/aws-authに権限追加IAMロールとIAMユーザーのパターンを紹介します。この作業を実行することで、EKSクラスターを作成したIAMエンティティ以外のIAMロールにもEKSの操作権限を付与することができます。adminエラーメッセージの紹介これから紹介するエラーメッセージは、EKSの初期設定を行う際に私が直面したエラーをまとめたものです。エラー11つ目のエラーです。(環境固有の部分はxxxxxxxxとしています。update-kubeconfigコマンドを実施した際に、このエラーメッセージとなることが多いと思います。arn:aws:xxxxxxxxにEKSクラスターの参照権限(eks:DescribeCluster)がないことが原因です。update-kubeconfigを実行元のIAMエンティティ(IAMユーザー、IAMロール)にeks:DescribeClusterのポリシーを追加することで解決できます。エラー22つ目のエラーです。(このメッセージは、マネジメントコンソールで表示されるものです。オブジェクトにアクセスできません。ConfigMapに登録されていないことが原因です。configMAPに登録することで解決できます。手順は、本記事を参照ください。エラー33つ目のエラーです。(サーバーからkubectlコマンドを実施した際に表示されるものです。ConfigMapに登録されていないことが原因です。Mapに登録することで解決できます。手順は、本記事を参照ください。以下のドキュメントが参考になります。https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/add-user-role.htmlエラー44つ目のエラーです。(このメッセージは、マネジメントコンソールで表示されるものです。Unauthorized原因マネジメントコンソールからEKSのリソースを確認する際、使用しているIAMエンティティに十分な権限が付与されていない場合に出力されるメッセージです。system:mastersのような強い権限を与えられていない場合は、一部のリソースだけマネジメントコンソール上からアクセスできないといったことが発生します。対処法については以下が参考になると思います。AWS側でマネジメントコンソールからEKSのリソースを確認するための設定が紹介されています。https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/view-kubernetes-resources.htmlまとめ本記事では、EKS構築時に私が陥った権限回りについてまとめました。「AWSのIAMの概念」と「Kubernetes側の概念」が組み合わさっているため、多少複雑ですが、理解しさえすれば単純な概念だと思います。本記事が誰かの役に立てば幸いです。参考記事https://repost.aws/ja/knowledge-center/amazon-eks-cluster-accesshttps://docs.aws.amazon.com/ja_jp/eks/latest/userguide/cluster-auth.htmlhttps://docs.aws.amazon.com/ja_jp/eks/latest/userguide/add-user-role.htmlhttps://docs.aws.amazon.com/ja_jp/eks/latest/userguide/view-kubernetes-resources.htmlmtkAWSを中心にクラウドエンジニアとして開発を行っています。DiscussionmtkAWSを中心にクラウドエンジニアとして開発を行っています。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。