向 IAM 用户和角色授予对 Kubernetes API 的访问权限
您的集群有一个 Kubernetes API 端点。Kubectl 使用此 API。您可以使用两种类型的身份对此 API 进行身份验证:
-
AWS Identity and Access Management(IAM)主体(角色或用户)– 此类型需要对 IAM 进行身份验证。用户可以使用通过身份源提供的凭证以 IAM 用户或联合身份
登录到 AWS。如果您的管理员以前使用 IAM 角色设置了身份联合验证,则用户只能使用联合身份登录。当用户使用联合身份验证访问 AWS 时,他们就是在间接分派角色。当用户使用此类身份时,您: -
可以为他们分配 Kubernetes 权限,以便其使用集群上的 Kubernetes 对象。有关如何为您的 IAM 主体分配权限以便他们能够访问集群上的 Kubernetes 对象的更多信息,请参阅使用 EKS 访问条目向 IAM 用户授予对 Kubernetes 的访问权限。
-
可以为他们分配 IAM 权限,以便其使用 Amazon EKS API、AWS CLI、AWS、AWS Management Console CloudFormation 或
eksctl
使用您的 Amazon EKS 集群及其资源。有关更多信息,请参阅《服务授权参考》中的 Amazon Elastic Kubernetes Service 定义的操作。 -
节点通过分派 IAM 角色加入您的集群。使用 IAM 主体访问集群的能力由适用于 Kubernetes 的 AWS IAM 身份验证器
提供,该工具在 Amazon EKS 控制面板上运行。
-
-
您自己的 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 身份验证器
-
创建访问条目 – 如果您的集群等于或高于集群 Kubernetes 版本的使用 EKS 访问条目向 IAM 用户授予对 Kubernetes 的访问权限先决条件部分中列出的平台版本,我们建议您使用此选项。
使用访问条目管理集群外的 IAM 主体的 Kubernetes 权限。您可以使用 EKS API、AWS 命令行界面、AWS SDK、AWS CloudFormation 和 AWS Management Console来添加和管理对集群的访问权限。这意味着您可以使用与创建集群相同的工具来管理用户。
首先,请按照更改身份验证模式以使用访问条目更改身份验证模式使用访问条目,然后按照将现有 aws-auth ConfigMap 条目迁移至访问条目迁移现有 aws-auth ConfigMap 条目来访问条目。
-
向
aws-auth
ConfigMap
中添加条目 – 如果您的集群的平台版本早于先决条件使用 EKS 访问条目向 IAM 用户授予对 Kubernetes 的访问权限部分中列出的版本,则必须使用此选项。如果您的集群的平台版本等于或高于集群 Kubernetes 版本的使用 EKS 访问条目向 IAM 用户授予对 Kubernetes 的访问权限先决条件部分中列出的平台版本,并且您已向ConfigMap
中添加了条目,那么我们建议您将这些条目迁移到访问条目。但是,您无法迁移 Amazon EKS 添加到ConfigMap
的条目,例如与托管节点组结合使用的 IAM 角色的条目或 Fargate 配置文件。有关更多信息,请参阅 向 IAM 用户和角色授予对 Kubernetes API 的访问权限。-
如果必须使用
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 命令行界面、AWS SDK、AWS CloudFormation 和 AWS Management Console来管理 IAM 主体对集群的访问权限。
每个访问条目都有一种类型,您可以使用访问范围将主体限制在特定的命名空间和访问策略的组合来设置预先配置且可重复使用的权限策略。或者,您可以使用 STANDARD 类型和 Kubernetes RBAC 组来分配自定义权限。
身份验证模式 | 方法 |
---|---|
仅 |
|
EKS API 和 |
访问 EKS API、AWS 命令行界面、AWS SDK、AWS CloudFormation AWS Management Console 和 |
仅 EKS API ( |
访问 EKS API、AWS 命令行界面、AWS SDK、AWS CloudFormation 和 AWS Management Console中的条目 |