IAM 故障排除
本主题介绍将 Amazon EKS 与 IAM 结合使用时可能遇到的一些常见错误以及相应的错误处理方式。
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 用户指南中的使用策略控制访问。
无法在计算选项卡上看到节点,或在资源选项卡上看到任何内容,您将在 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 身份验证器ConfigMap
中使用角色 ARN 中的路径。因此,在指定 rolearn
之前,请删除路径。例如,将
arn:aws:iam::
更改为 111122223333
:role/team
/developers
/eks-admin
arn:aws:iam::
。111122223333
:role/eks-admin
我无权执行 iam:PassRole
如果您收到一个错误,表明您无权执行 iam:PassRole
操作,则必须更新策略以允许您将角色传递给 Amazon EKS。
有些 AWS 服务允许您将现有角色传递到该服务,而不是创建新服务角色或服务相关角色。为此,您必须具有将角色传递到服务的权限。
当名为 marymajor
的 IAM 用户尝试使用控制台在 Amazon EKS 中执行操作时,会发生以下示例错误。但是,服务必须具有服务角色所授予的权限才可执行此操作。Mary 不具有将角色传递到服务的权限。
User: {arn-aws}iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
在这种情况下,必须更新 Mary 的策略以允许她执行 iam:PassRole
操作。
如果您需要帮助,请联系 AWS 管理员。您的管理员是提供登录凭证的人。
我希望允许我的AWS账户以外的人访问我的 Amazon EKS 资源
您可以创建一个角色,以便其他账户中的用户或您组织外的人员可以使用该角色来访问您的资源。您可以指定谁值得信赖,可以担任角色。对于支持基于资源的策略或访问控制列表(ACL)的服务,您可以使用这些策略向人员授予对您的资源的访问权。
要了解更多信息,请参阅以下内容:
-
要了解 Amazon EKS 是否支持这些功能,请参阅 Amazon EKS 如何与 IAM 配合使用。
-
要了解如何为您拥有的 AWS 账户中的资源提供访问权限,请参阅 IAM 用户指南中的为您拥有的另一个 AWS 账户中的 IAM 用户提供访问权限。
-
要了解如何为第三方 AWS 账户提供您的资源的访问权限,请参阅IAM 用户指南中的 为第三方拥有的 AWS 账户提供访问权限。
-
要了解如何通过联合身份验证提供访问权限,请参阅《IAM 用户指南》中的为经过外部身份验证的用户(联合身份验证)提供访问权限。
-
要了解使用角色和基于资源的策略进行跨账户访问之间的差别,请参阅《IAM 用户指南》中的 IAM 中的跨账户资源访问。
容器组(pod)容器收到以下错误: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 端点。