疑难解答IAM - Amazon EKS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

疑难解答IAM

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

AccessDeniedException

如果您在调用 AccessDeniedException API 操作时收到 AWS,则表明您使用的 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 的控制台错误消息。确保您登录 IAM的 AWS 管理控制台 实体(用户或角色)满足以下所有要求:

  • 附加了一个包含 IAM 操作的 eks:AccessKubernetesApi 策略。有关示例 IAM 策略,请参阅查看 AWS 管理控制台 中所有集群的节点和工作负载。如果您在 IAM 中使用 AWS 管理控制台 策略可视化编辑器,但看不到列出的 eks:AccessKubernetesApi Permission (权限),请编辑策略的 JSON 并将 eks:AccessKubernetesApi 添加到 JSON 中的 Action 列表。

  • 具有到 aws-auth 配置映射中的 Kubernetes 用户或组的映射。有关将 IAM 用户或角色添加到 aws-auth 配置映射的更多信息,请参阅管理集群的用户或 IAM 角色。如果未映射用户或角色,则控制台错误可能包括 Unauthorized: Authenticate you access to the Kubernetes cluster (未授权:验证您是否有权访问 Kubernetes 集群)

  • 账户或角色映射到的 Kubernetes 用户或组必须是绑定到 Kubernetes IAM 或 subject(具有查看 Kubernetes 资源所需的权限)的 rolebindingclusterrolebinding 中的 roleclusterrole如果用户或组没有必要的权限,则控制台错误可能包括 Unauthorized: Authenticate you have access to the Kubernetes cluster (未授权:验证您是否有权访问 Kubernetes 集群)。要创建角色和绑定,请参阅 Kubernetes 文档中的使用 RBAC 授权。您可以下载以下创建 clusterroleclusterrolebindingrolerolebinding 的示例清单:

    • 查看所有命名空间中的 Kubernetes 资源 – 文件中的组名称是 eks-console-dashboard-full-access-group,这是 IAM 用户或角色需要在 aws-auth configmap 中映射到的组。如果需要,您可以在将组的名称应用到集群之前更改组的名称,然后在 configmap 中将 IAM 用户或角色映射到该组。要下载文件,请为您的集群所在的区域选择适当的链接。

    • 查看特定命名空间中的 Kubernetes 资源 – 此文件中的命名空间是 default,因此,如果您想指定其他命名空间,请在将文件应用到集群之前对其进行编辑。文件中的组名称是 eks-console-dashboard-restricted-access-group,这是 IAM 用户或角色需要在 aws-auth configmap 中映射到的组。如果需要,您可以在将组的名称应用到集群之前更改组的名称,然后在 configmap 中将 IAM 用户或角色映射到该组。要下载文件,请为您的集群所在的区域选择适当的链接。

aws-auth ConfigMap 不授予对集群的访问权限

AWS IAM Authenticator 不允许在配置映射中使用角色 ARN 中的路径。因此,在指定 rolearn 之前,请删除路径。例如,将 arn:aws-cn:iam::<123456789012>:role/<team>/<developers>/<eks-admin> 更改为 arn:aws-cn:iam::<123456789012>:role/<eks-admin>

我无权执行 iam:PassRole

如果您收到错误消息,提示您无权执行 iam:PassRole 操作,则必须联系您的管理员寻求帮助。您的管理员是指为您提供用户名和密码的那个人。请求那个人更新您的策略,以便允许您将角色传递给 Amazon EKS。

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

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

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

在这种情况下,Mary 请求她的管理员来更新其策略,以允许她执行 iam:PassRole 操作。

我想要查看我的访问密钥

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

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

重要

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

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

我是管理员并希望允许其他人访问 Amazon EKS

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

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

我想要允许我的 AWS 账户之外的用户访问我的 Amazon EKS 资源

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

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