向 IAM 用户和角色授予对 Kubernetes APIs 的访问权限 - Amazon EKS

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

向 IAM 用户和角色授予对 Kubernetes APIs 的访问权限

您的集群有一个 Kubernetes API 端点。Kubectl 使用此 API。您可以使用两种类型的身份对此 API 进行身份验证:

  • AWS Identity and Access Management(IAM)主体(角色或用户)– 此类型需要对 IAM 进行身份验证。用户可以使用通过身份源提供的凭证以 IAM 用户或联合身份登录到 AWS。如果您的管理员以前使用 IAM 角色设置了身份联合验证,则用户只能使用联合身份登录。当用户使用联合身份验证访问 AWS 时,他们就是在间接分派角色。当用户使用此类身份时,您:

  • 您自己的 OpenID Connect(OIDC)提供者中的用户 – 此类型需要对您的 OIDC 提供者进行身份验证。有关使用 Amazon EKS 集群设置自己的 OIDC 提供者的更多信息,请参阅 通过外部 OIDC 提供者向用户授予对 Kubernetes 的访问权限。当用户使用此类身份时,您:

    • 可以为他们分配 Kubernetes 权限,以便其使用集群上的 Kubernetes 对象。

    • 无法向他们分配 IAM 权限,使他们能够使用 Amazon EKS API、AWS CLI、AWS CloudFormation、AWS Management Console、或 eksctl 使用您的 Amazon EKS 集群及其资源。

您可以在集群中使用这两种类型的身份。IAM 身份验证方法无法禁用。OIDC 身份验证方法是可选的。

将 IAM 身份与 Kubernetes 权限相关联

Kubernetes 的 AWS IAM 身份验证器安装在集群的控制面板上。该工具使您允许的 AWS Identity and Access Management(IAM)主体(角色和用户)能够访问集群上的 Kubernetes 资源。您可以使用以下其中一种方法,允许 IAM 主体访问集群上的 Kubernetes 对象:

  • 创建访问条目 – 如果您的集群等于或高于集群 Kubernetes 版本的先决条件部分中列出的平台版本,我们建议您使用此选项。

    使用访问条目管理集群外的 IAM 主体的 Kubernetes 权限。您可以使用 EKS API、AWS Command Line Interface、AWS SDK、AWS CloudFormation 和 AWS Management Console 来添加和管理对集群的访问权限。这意味着您可以使用与创建集群相同的工具来管理用户。

    要开始使用,请先 更改身份验证模式以使用访问条目,然后 将现有 aws-auth ConfigMap 条目迁移至访问条目

  • aws-auth ConfigMap 中添加条目 – 如果您的集群的平台版本早于先决条件部分中列出的版本,则必须使用此选项。如果您的集群的平台版本等于或高于集群 Kubernetes 版本的先决条件部分中列出的平台版本,并且您已向 ConfigMap 中添加了条目,那么我们建议您将这些条目迁移到访问条目。但是,您无法迁移 Amazon EKS 添加到 ConfigMap 的条目,例如与托管节点组一起使用的 IAM 角色的条目或 Fargate 配置文件。有关更多信息,请参阅 向 IAM 用户和角色授予对 Kubernetes APIs 的访问权限

    • 如果必须使用 aws-auth ConfigMap 选项,则可以使用 eksctl create iamidentitymapping 命令向 ConfigMap 中添加条目。有关更多信息,请参阅 eksctl 文档中的管理 IAM 用户和角色

设置集群身份验证模式

每个集群都有一种身份验证模式。身份验证模式决定了您可以使用哪些方法来允许 IAM 主体访问集群上的 Kubernetes 对象。有三种身份验证模式。

重要

一旦启用了访问条目方法,就无法将其禁用。

如果在创建集群时未启用 ConfigMap 方法,则以后无法启用它。在引入访问条目之前创建的所有集群都启用了 ConfigMap 方法。

集群内部的 aws-auth ConfigMap

这是 Amazon EKS 集群的原始身份验证模式。创建集群的 IAM 主体是可以使用 kubectl 访问集群的初始用户。初始用户必须将其他用户添加到 aws-auth ConfigMap 中的列表中,并分配影响集群内其他用户的权限。这些其他用户无法管理或移除初始用户,因为 ConfigMap 中没有要管理的条目。

ConfigMap 和访问条目

使用这种身份验证模式,您可以使用这两种方法向集群添加 IAM 主体。请注意,每种方法都存储单独的条目;例如,如果您从 AWS CLI 中添加访问条目,aws-auth ConfigMap 则不会更新。

仅访问条目

使用这种身份验证模式,您可以使用 EKS API、AWS Command Line Interface、AWS SDK、AWS CloudFormation 和 AWS Management Console 来管理 IAM 主体对集群的访问权限。

每个访问条目都有一种类型,您可以使用访问范围将主体限制在特定的命名空间和访问策略的组合来设置预先配置且可重复使用的权限策略。或者,您可以使用 STANDARD 类型和 Kubernetes RBAC 组来分配自定义权限。

身份验证模式 方法
ConfigMap (CONFIG_MAP) aws-auth ConfigMap
EKS API 和 ConfigMap (API_AND_CONFIG_MAP) EKS API、AWS Command Line Interface、AWS SDK、AWS CloudFormation 和 AWS Management Console 中的访问条目以及 aws-auth ConfigMap
仅 EKS API (API) EKS API、AWS Command Line Interface、AWS SDK、AWS CloudFormation 和 AWS Management Console 中的访问条目