IAM 故障排除 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

IAM 故障排除

本主题介绍将 Amazon EKS 与 IAM 结合使用时可能遇到的一些常见错误以及相应的错误处理方式。

如果您在调用 Amazon API 操作时收到 AccessDeniedException,则表明您使用的 Amazon 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/my-cluster

在前述示例消息中,用户没有权限调用 Amazon EKS DescribeCluster API 操作。要为用户提供 Amazon EKS 管理员权限,请参阅 Amazon EKS 基于身份的策略示例

有关 IAM 的一般信息,请参阅 IAM 用户指南中的使用策略控制访问

您可能会看到一条内容为“Your current user or role does not have access to Kubernetes objects on this EKS cluster”的控制台错误消息。请确保您登录到 Amazon Web Services Management Console 所使用的 IAM 用户(或您在登录后切换到的角色)具有必要的权限。有关更多信息,请参阅所需权限

Amazon IAM 身份验证器不允许在 ConfigMap 中使用角色 ARN 中的路径。因此,在指定 rolearn 之前,请删除路径。例如,将 arn:aws:iam::111122223333:role/team/developers/eks-admin 更改为 arn:aws:iam::111122223333:role/eks-admin

如果您收到一个错误,表明您无权执行 iam:PassRole 操作,则必须更新策略以允许您将角色传递给 Amazon EKS。

有些 Amazon Web Services允许您将现有角色传递到该服务,而不是创建新服务角色或服务相关角色。为此,您必须具有将角色传递到服务的权限。

当名为 marymajor 的 IAM 用户尝试使用控制台在 Amazon EKS 中执行操作时,会发生以下示例错误。但是,服务必须具有服务角色所授予的权限才可执行此操作。Mary 不具有将角色传递到服务的权限。

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

在这种情况下,必须更新 Mary 的策略以允许她执行 iam:PassRole 操作。

如果您需要帮助,请联系您的 Amazon 管理员。管理员是向您提供登录凭证的人。

在创建 IAM 用户访问密钥后,您可以随时查看您的访问密钥 ID。但是,您无法再查看您的秘密访问密钥。如果您丢失了私有密钥,则必须创建一个新的访问密钥对。

访问密钥包含两部分:访问密钥 ID(例如 AKIAIOSFODNN7EXAMPLE)和秘密访问密钥(例如 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY)。与用户名和密码一样,您必须同时使用访问密钥 ID 和秘密访问密钥对请求执行身份验证。像对用户名和密码一样,安全地管理访问密钥。

重要

请不要向第三方提供访问密钥,即便是为了帮助找到您的规范用户 ID 也不行。如果您这样做,可能会向某人提供对您的账户的永久访问权限。

当您创建访问密钥对时,系统会提示您将访问密钥 ID 和秘密访问密钥保存在一个安全位置。秘密访问密钥仅在您创建它时可用。如果丢失了您的秘密访问密钥,您必须为 IAM 用户添加新的访问密钥。您最多可拥有两个访问密钥。如果您已有两个密钥,则必须删除一个密钥对,然后再创建新的密钥。要查看说明,请参阅 IAM 用户指南中的管理访问密钥

要允许其他人访问 Amazon EKS,您必须为需要访问权限的人员或应用程序创建一个 IAM 实体(用户或角色)。它们将使用该实体的凭证访问 Amazon。然后,您必须将策略附加到实体,以便在 Amazon EKS 中为他们(它们)授予正确的权限。

要立即开始使用,请参阅 IAM 用户指南中的创建您的第一个 IAM 委派用户和组

您可以创建一个角色,以便其它账户中的用户或您组织外的人员可以使用该角色来访问您的资源。您可以指定谁值得信赖,可以代入角色。对于支持基于资源的策略或访问控制列表 (ACL) 的服务,您可以使用这些策略向人员授予对您的资源的访问权。

要了解更多信息,请参阅以下内容:

如果您的应用程序明确向 Amazon STS 全局端点 (https://sts.amazonaws) 提出请求并且您的 Kubernetes 服务账户已配置为使用区域端点,您的容器将收到此错误。您可以使用以下选项之一解决问题:

  • 更新应用程序代码以删除对 Amazon STS 全局端点的显式调用。

  • 更新应用程序代码以明确调用区域端点,例如 https://sts.cn-north-1.amazonaws.com.cn。您的应用程序应内置冗余功能,以便在该 Amazon Web Services 区域 的服务出现故障时选择其他 Amazon Web Services 区域。有关更多信息,请参阅 IAM 用户指南中的在 Amazon Web Services 区域中管理 Amazon STS

  • 将服务账户配置为使用全局端点。低于 1.22 的所有版本默认情况下使用全局端点,但 1.22 版本和更高版本集群默认使用区域端点。如果您的代码对 1.22 或更高版本集群上的全局端点进行显式调用,如果您使用的是默认端点类型,则会收到错误消息。有关更多信息,请参阅配置服务账户的 Amazon Security Token Service 端点