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

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

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

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

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

AccessDeniedException

AWS API オペレーションの呼び出し時に AccessDeniedException を受け取った場合、使用している 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/my-cluster

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

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

[Compute] (コンピューティング) タブに [Nodes] (ノード) が表示されず、また [Resources] (リソース) タブにも何も表示されず、AWS Management Console でエラーが表示される

Your current user or role does not have access to Kubernetes objects on this EKS clusterというコンソールのエラーメッセージが表示されることがあります。AWS Management Console を使用している IAM プリンシパルユーザーに必要な許可があることを確認してください。詳細については、「必要なアクセス許可」を参照してください。

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

AWS IAM Authenticator は、ConfigMap で使用されるロール ARN でパスを許可しません。したがって、rolearn を指定する前に、パスを削除してください。例えば、arn:aws:iam::111122223333:role/team/developers/eks-adminarn:aws:iam::111122223333: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

この場合、Mary のポリシーを更新してメアリーに iam:PassRole アクションの実行を許可する必要があります。

サポートが必要な場合は、AWS 管理者に問い合わせてください。サインイン認証情報を提供した担当者が管理者です。

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

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

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

ポッドコンテナは次のエラーを受け取ります: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region

アプリケーションが明示的に AWS STS グローバル エンドポイント (https://sts.amazonaws) にリクエストを送信し、Kubernetes サービス アカウントがリージョン エンドポイントを使用するように設定されている場合、コンテナはこのエラーを受け取ります。次のいずれかのオプションを使用して問題を解決できます。

  • アプリケーションコードを更新して、AWS STS グローバルエンドポイントへの明示的な呼び出しを削除します。

  • アプリケーションコードを更新して、https://sts.us-west-2.amazonaws.com などのリージョンエンドポイントへの明示的な呼び出しを行います。AWS リージョン 内のサービスに障害が発生した場合に別の AWS リージョン を選択するよう、アプリケーションに冗長性が組み込まれている必要があります。詳細については、IAM ユーザーガイドの 「AWS リージョン での AWS STS の管理」を参照してください。

  • グローバルエンドポイントを使用するようにサービスアカウントを設定します。1.22 より前のすべてのバージョンでは、デフォルトでグローバルエンドポイントを使用しましたが、バージョン 1.22 以降のクラスターでは、デフォルトでリージョンエンドポイントを使用します。詳細については、「サービスアカウントの AWS Security Token Service エンドポイントを設定する」を参照してください。