IAM のトラブルシューティング - Amazon EKS

IAM のトラブルシューティング

このトピックでは、IAM での Amazon EKS の使用中に表示される一般的なエラーとその回避方法について説明します。

AccessDeniedException

AWS API オペレーションの呼び出し時に AccessDeniedException を受け取った場合、使用している AWS Identity and Access Management (IAM) ユーザーまたはロールの認証情報に、その呼び出しに必要なアクセス許可がありません。

An error occurred (AccessDeniedException) when calling the DescribeCluster operation: User: arn:aws:iam::<111122223333>:user/<user_name> is not authorized to perform: eks:DescribeCluster on resource: arn:aws:eks<:region>:<111122223333>:cluster/<cluster_name>

上記のメッセージの例では、ユーザーには Amazon EKS DescribeCluster API オペレーションを呼び出すアクセス許可がありません。ユーザーに Amazon EKS 管理のアクセス許可を付与するには、「Amazon EKS でのアイデンティティベースのポリシーの例」を参照してください。

IAM の一般的な情報については、IAM ユーザーガイドの「ポリシーを使用したアクセスの制御」を参照してください。

ワークロードまたはノードを確認できず、AWS マネジメントコンソールでエラーが表示される

Your current user or role does not have access to Kubernetes objects on this EKS clusterというコンソールのエラーメッセージが表示されることがあります。AWS マネジメントコンソールにサインインしている IAM エンティティ (ユーザーまたはロール) が、次の要件をすべて満たしていることを確認してください。

  • eks:AccessKubernetesApi アクションを含む IAM ポリシーがアタッチされていること。IAM ポリシーの例については、「AWS マネジメントコンソールで、すべてのクラスターのノードとワークロードを表示する」を参照してください。AWS マネジメントコンソールで IAM ポリシービジュアルエディターを使用しているが、eks:AccessKubernetesApi アクセス許可が表示されていない場合は、ポリシーの JSON を編集し、JSON の Action のリストに eks:AccessKubernetesApi を追加します。

  • aws-auth Configmap で Kubernetes のユーザーまたはグループにマッピングされていること。IAM ユーザーまたはロールの aws-auth ConfigMap への追加に関する詳細については、「クラスターのユーザーまたは IAM ロールの管理」を参照してください。ユーザーまたはロールがマッピングされていない場合、コンソールのエラーには Unauthorized: Verify you have access to the Kubernetes cluster (Kubernetes クラスターにアクセスできることを確認してください) が含まれる場合があります。

  • IAM アカウントまたはロールが ConfigMap でマッピングされている Kubernetes ユーザーまたはグループは、rolebinding または clusterrolebindingsubject である必要があります。これらは、Kubernetes role または clusterrole にバインドされており、Kubernetes リソースを表示するアクセス許可がある必要があります。ユーザーまたはグループに必要なアクセス許可がない場合、コンソールのエラーには Unauthorized: Verify you have access to the Kubernetes cluster (Kubernetes クラスターにアクセスできることを確認してください) が含まれる場合があります。ロールとバインディングを作成するには、Kubernetes ドキュメントの Using RBAC Authorization (RBAC 認証の使用) を参照してください。clusterrole および clusterrolebinding、または role および rolebinding を作成するサンプルマニフェストをダウンロードできます。View nodes and workloads for all clusters in the AWS Management Console (AWS マネジメントコンソールですべてのクラスターのノードとワークロードを表示する) の [重要] セクションで次の手順にしたがってください。

aws-auth ConfigMap がクラスターへのアクセスを許可しない

AWS IAM Authenticator は、設定マップで使用されるロール ARN でパスを許可しません。したがって、rolearn を指定する前に、パスを削除してください。例えば、arn:aws:iam::<123456789012>:role/<team>/<developers>/<eks-admin>arn:aws:iam::<123456789012>:role/<eks-admin> に変更します。

iam:PassRole を実行する権限がない

iam:PassRole アクションを実行する権限がないというエラーが表示された場合、管理者に問い合わせ、サポートを依頼する必要があります。お客様のユーザー名とパスワードを発行したのが、担当の管理者です。Amazon EKS にロールを渡すことができるようにポリシーを更新するよう、管理者に依頼します。

一部の AWS のサービスでは、新しいサービスロールまたはサービスにリンクされたロールを作成せずに、既存のロールをサービスに渡すことができます。そのためには、サービスにロールを渡すアクセス許可が必要です。

次の例のエラーは、marymajor という IAM ユーザーがコンソールを使用して Amazon EKS でアクションを実行しようとする場合に発生します。ただし、アクションでは、サービスロールによって付与されたアクセス許可がサービスにある必要があります。メアリーには、ロールをサービスに渡すアクセス許可がありません。

User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole

この場合、メアリーは担当の管理者に iam:PassRole アクションを実行できるようにポリシーの更新を依頼します。

アクセスキーを表示する場合

IAM ユーザーアクセスキーを作成した後は、いつでもアクセスキー ID を表示できます。ただし、シークレットアクセスキーをもう一度表示することはできません。シークレットアクセスキーを紛失した場合は、新しいキーペアを作成する必要があります。

アクセスキーは、アクセスキー ID (例: AKIAIOSFODNN7EXAMPLE) とシークレットアクセスキー (例: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY) の 2 つの部分から構成されます。ユーザー名とパスワードと同様に、リクエストを認証するために、アクセスキー ID とシークレットアクセスキーの両方を使用する必要があります。ユーザー名とパスワードと同様に、アクセスキーをしっかり管理してください。

重要

正規ユーザー ID を確認するためであっても、アクセスキーをサードパーティーに提供しないでください。提供すると、第三者がアカウントへの永続的アクセスを取得する場合があります。

アクセスキーペアを作成する場合、アクセスキー ID とシークレットアクセスキーを安全な場所に保存するように求めるプロンプトが表示されます。このシークレットアクセスキーは、作成時にのみ使用できます。シークレットアクセスキーを紛失した場合、新しいアクセスキーを IAM ユーザーに追加する必要があります。最大 2 つのアクセスキーを持つことができます。すでに 2 つある場合は、新しいキーペアを作成する前に、いずれかを削除する必要があります。手順を表示するには、IAM ユーザーガイドの「アクセスキーの管理」を参照してください。

管理者として Amazon EKS へのアクセスを他のユーザーに許可したい

Amazon EKS へのアクセスを他のユーザーに許可するには、アクセスを必要とする人またはアプリケーション用に IAM エンティティ (ユーザーまたはロール) を作成する必要があります。ユーザーは、このエンティティの認証情報を使用して AWS にアクセスします。次に、Amazon EKS の適切なアクセス許可を付与するポリシーを、そのエンティティにアタッチする必要があります。

すぐに開始するには、IAM ユーザーガイドの「IAM が委任した最初のユーザーおよびグループの作成」を参照してください。

AWS アカウント以外のユーザーに Amazon EKS リソースへのアクセスを許可したい

他のアカウントのユーザーや組織外のユーザーが、リソースへのアクセスに使用できるロールを作成できます。ロールを引き受けるように信頼されたユーザーを指定することができます。リソースベースのポリシーまたはアクセスコントロールリスト (ACL) をサポートするサービスの場合、それらのポリシーを使用して、リソースへのアクセスを付与できます。

詳細については、以下を参照してください。