本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
集群访问管理
有效的访问管理对于维护 Amazon EKS 集群的安全和完整性至关重要。本指南探讨了 EKS 访问管理的各种选项,重点介绍如何使用 AWS IAM 身份中心(前身为 AWS SSO)。我们将比较不同的方法,讨论它们的权衡取舍,并重点介绍已知的局限性和注意事项。
EKS 访问管理选项
注意
ConfigMap已弃用基于集群访问管理 (aws-auth ConfigMap) 的访问管理 (aws-auth),取而代之的是集群访问管理 (CAM) API。对于新的 EKS 集群,请实施 CAM API 来管理集群访问权限。对于使用 aws-auth 的现有集群 ConfigMap,请迁移到使用 CAM API。
选项 1:带有集群访问管理 (CAM) API 的 AWS IAM 身份中心
-
集中式用户和权限管理
-
与现有身份提供商(例如微软 AD、Okta 等 PingId )集成
-
CAM API 使用访问条目将 AWS IAM 委托人(用户或角色)链接到 EKS 集群。这些条目可与 IAM Identity Center 的托管身份配合使用,允许管理员控制在 Identity Center 中定义的用户和群组的集群访问权限。
EKS 集群身份验证流程:

-
委托人(人类用户)或自动流程通过出示相应的 AWS 账户权限通过 AWS IAM 进行身份验证。在此步骤中,它们会映射到相应的 AWS IAM 委托人(角色或用户)。
-
接下来,通过定义适当的访问策略(仅包含 Kubernetes 权限),EKS 访问条目将此 IAM 委托人映射到 Kubernetes RBAC 委托人(用户或群组)。
-
当 Kubernetes 最终用户尝试访问集群时,其身份验证请求将由或 aws-iam-authenticator AWS EKS CLI 处理,并根据 kubeconfig 文件中的集群环境进行验证。
-
最后,EKS 授权者验证与经过身份验证的用户的访问条目相关的权限,并相应地授予或拒绝访问权限。
-
API 使用特定于 Amazon EKS 的访问策略来定义每个访问条目的授权级别。这些策略可以映射到 IAM Identity Center 中设置的角色和权限,从而确保对 AWS 服务和 EKS 集群进行一致的访问控制。
-
与 ConfigMap基于基础的访问管理相比的优点:
-
降低配置错误的风险:基于 API 的直接管理可消除与手动编辑相关的常见错误。 ConfigMap 这有助于防止意外删除或语法错误,这些错误可能会将用户锁定在集群之外。
-
增强的最低权限原则:不再需要集群创建者身份中的集群管理员权限,并允许进行更精细和适当的权限分配。您可以选择为破碎玻璃用例添加此权限。
-
增强的安全模型:在应用访问条目之前提供对访问条目的内置验证。此外,还提供与 AWS IAM 更紧密的集成以进行身份验证。
-
简化操作:通过 AWS 原生工具提供更直观的权限管理方式。
最佳实践:
-
使用 AWS Organizations 管理多个账户并应用服务控制策略 (SCPs)。
-
通过为不同的 EKS 角色(例如管理员、开发人员、只读)创建特定的权限集来实现最低权限原则。
-
利用基于属性的访问控制 (ABAC),根据用户属性为容器动态分配权限。
-
定期审计和审查访问权限。
注意事项/限制:
-
Identity Center ARNs 生成的角色具有随机后缀,因此很难在静态配置中使用。
-
Kubernetes 资源级别对细粒度权限的支持有限。自定义 Kubernetes RBAC 角色需要进行其他配置。除了 Kubernetes 原生 RBAC 之外,还可以考虑使用 Kyverno 在 EKS 集群中进行高级权限管理。
选项 2:AWS IAM Users/Roles 映射到 Kubernetes 群组
优点:
-
对 IAM 权限的精细控制。
-
可预测的静态角色 ARNs
缺点:
-
增加了用户账户的管理开销
-
缺乏集中式身份管理
-
IAM 实体有可能激增
最佳实践:
-
使用 IAM 角色代替 IAM 用户以提高安全性和可管理性
-
为角色实施命名惯例,以确保一致性和易管理性
-
利用 IAM 策略条件根据标签或其他属性限制访问权限。
-
定期轮换访问密钥并查看权限。
注意事项/限制:
-
管理大量用户或角色时出现可扩展性问题
-
没有内置的单点登录功能
选项 3:OIDC 提供商
优点:
-
与现有身份管理系统集成
-
减少了用户帐户的管理开销
缺点:
-
额外的配置复杂性
-
身份验证期间的延迟可能会增加
-
对外部身份提供商的依赖
最佳实践:
-
仔细配置 OIDC 提供商,以确保安全令牌验证。
-
使用短期令牌并实现令牌刷新机制。
-
定期审核和更新 OIDC 配置。
查看本指南,了解将外部单点登录提供商与 Amazon EKS 集成的
注意事项/限制:
-
与 IAM 相比,与 AWS 服务的本地集成有限。
-
OIDC 提供商的发行者 URL 必须可公开访问,EKS 才能发现签名密钥。
适用于工作负载的 AWS EKS Pod 身份与 IRSA
Amazon EKS 提供了两种向在 Amazon EKS 集群中运行的工作负载授予 AWS IAM 权限的方法:服务账户的 IAM 角色 (IRSA) 和 EKS Pod 身份。
虽然 IRSA 和 EKS Pod 身份都具有最低权限访问、凭据隔离和可审计性的优点,但 EKS Pod Identity 是向工作负载授予权限的推荐方式。
有关 EKS pod 的身份和凭证的详细指南,请参阅安全最佳实践中的身份和证书部分。
建议
将 IAM 身份中心与 CAM API 相结合
-
简化管理:通过将集群访问管理 API 与 IAM Identity Center 配合使用,管理员可以管理 EKS 集群访问权限以及其他 AWS 服务,从而减少了在不同界面之间切换或 ConfigMaps 手动编辑的需求。
-
使用访问条目管理集群外的 IAM 主体的 Kubernetes 权限。您可以使用 EKS API、AWS 命令行界面、AWS、AWS 和 AWS SDKs 管理控制台来添加和管理对集群的访问权限。 CloudFormation这意味着您可以使用与创建集群相同的工具来管理用户。
-
可以通过访问条目和访问策略将 Kubernetes 用户或群组映射到与 SSO 身份关联的 IAM 委托人,从而应用精细的 Kubernetes 权限。
-
首先,请按照更改身份验证模式使用访问条目,然后按照迁移现有的 aws-auth ConfigMap 条目来访问条目。