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

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

您的集群有一个 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 对象:

设置集群身份验证模式

每个集群都有一种身份验证模式。身份验证模式决定了您可以使用哪些方法来允许 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 命令行界面、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 命令行界面、AWS SDK、AWS CloudFormation AWS Management Console 和 aws-auth ConfigMap 中的条目

仅 EKS API (API)

访问 EKS API、AWS 命令行界面、AWS SDK、AWS CloudFormation 和 AWS Management Console中的条目