集群访问管理 - Amazon EKS

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

集群访问管理

有效的访问管理对于维护 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 集群身份验证流程:

EKS 集群身份验证流程
  1. 委托人(人类用户)或自动流程通过出示相应的 AWS 账户权限通过 AWS IAM 进行身份验证。在此步骤中,它们会映射到相应的 AWS IAM 委托人(角色或用户)。

  2. 接下来,通过定义适当的访问策略(仅包含 Kubernetes 权限),EKS 访问条目将此 IAM 委托人映射到 Kubernetes RBAC 委托人(用户或群组)。

  3. 当 Kubernetes 最终用户尝试访问集群时,其身份验证请求将由或 aws-iam-authenticator AWS EKS CLI 处理,并根据 kubeconfig 文件中的集群环境进行验证。

  4. 最后,EKS 授权者验证与经过身份验证的用户的访问条目相关的权限,并相应地授予或拒绝访问权限。

    • API 使用特定于 Amazon EKS 的访问策略来定义每个访问条目的授权级别。这些策略可以映射到 IAM Identity Center 中设置的角色和权限,从而确保对 AWS 服务和 EKS 集群进行一致的访问控制。

与 ConfigMap基于基础的访问管理相比的优点:

  1. 降低配置错误的风险:基于 API 的直接管理可消除与手动编辑相关的常见错误。 ConfigMap 这有助于防止意外删除或语法错误,这些错误可能会将用户锁定在集群之外。

  2. 增强的最低权限原则:不再需要集群创建者身份中的集群管理员权限,并允许进行更精细和适当的权限分配。您可以选择为破碎玻璃用例添加此权限。

  3. 增强的安全模型:在应用访问条目之前提供对访问条目的内置验证。此外,还提供与 AWS IAM 更紧密的集成以进行身份验证。

  4. 简化操作:通过 AWS 原生工具提供更直观的权限管理方式。

最佳实践:

  1. 使用 AWS Organizations 管理多个账户并应用服务控制策略 (SCPs)。

  2. 通过为不同的 EKS 角色(例如管理员、开发人员、只读)创建特定的权限集来实现最低权限原则。

  3. 利用基于属性的访问控制 (ABAC),根据用户属性为容器动态分配权限。

  4. 定期审计和审查访问权限。

注意事项/限制:

  1. Identity Center ARNs 生成的角色具有随机后缀,因此很难在静态配置中使用。

  2. Kubernetes 资源级别对细粒度权限的支持有限。自定义 Kubernetes RBAC 角色需要进行其他配置。除了 Kubernetes 原生 RBAC 之外,还可以考虑使用 Kyverno 在 EKS 集群中进行高级权限管理。

选项 2:AWS IAM Users/Roles 映射到 Kubernetes 群组

优点:

  1. 对 IAM 权限的精细控制。

  2. 可预测的静态角色 ARNs

缺点:

  1. 增加了用户账户的管理开销

  2. 缺乏集中式身份管理

  3. IAM 实体有可能激增

最佳实践:

  1. 使用 IAM 角色代替 IAM 用户以提高安全性和可管理性

  2. 为角色实施命名惯例,以确保一致性和易管理性

  3. 利用 IAM 策略条件根据标签或其他属性限制访问权限。

  4. 定期轮换访问密钥并查看权限。

注意事项/限制:

  1. 管理大量用户或角色时出现可扩展性问题

  2. 没有内置的单点登录功能

选项 3:OIDC 提供商

优点:

  1. 与现有身份管理系统集成

  2. 减少了用户帐户的管理开销

缺点:

  1. 额外的配置复杂性

  2. 身份验证期间的延迟可能会增加

  3. 对外部身份提供商的依赖

最佳实践:

  1. 仔细配置 OIDC 提供商,以确保安全令牌验证。

  2. 使用短期令牌并实现令牌刷新机制。

  3. 定期审核和更新 OIDC 配置。

查看本指南,了解将外部单点登录提供商与 Amazon EKS 集成的参考实现方法

注意事项/限制:

  1. 与 IAM 相比,与 AWS 服务的本地集成有限。

  2. 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 条目来访问条目