CIS 基准


本页介绍了 Google Kubernetes Engine (GKE) 为提高对 Kubernetes 和 GKE 的 Center for Internet Security (CIS) 基准的遵从程度所采取的方法。本页面包含以下信息:

  • 我们如何配置托管式 GKE 控制平面以符合 CIS Kubernetes 基准
  • 如何配置 GKE 节点和工作负载以符合 CIS Google Kubernetes Engine (GKE) 基准

CIS 基准简介

CIS 发布了以下基准,其中包含 Kubernetes 的安全配置准则:

  • CIS Kubernetes 基准:适用于开源 Kubernetes 项目。旨在为各种自管理和托管 Kubernetes 实现提供指导。
  • CIS GKE 基准:为您在 GKE 集群中可以控制的组件的安全配置制定了准则。包括专门针对 Google Cloud 上的 GKE 的建议。

我们建议您优先考虑 CIS GKE 基准,因为它专门针对 GKE on Google Cloud。CIS Kubernetes 基准包含许多针对您无法在 GKE 中查看或修改的控制功能的建议。我们的集群安全方法包括超出开源 Kubernetes 基准范围的缓解措施,并且可能会导致与这些建议冲突。

适用于 GKE 的其他基准

除了 CIS GKE 基准和 CIS Kubernetes 基准之外,以下基准也适用于 GKE 中提供的操作系统。即使特定操作系统基准未明确涉及 Kubernetes 使用情况,您仍应参考该基准以获取额外的安全指导。

默认容器运行时 containerd 没有基准。

责任共担模型

根据 GKE 共担责任模型,我们会为您管理以下组件:

  • 控制平面,包括控制平面虚拟机、API 服务器以及 etcd、kube-controller-manager 和 kube-scheduler 等组件。
  • 节点操作系统。

这些组件位于 GKE 拥有的项目中,因此您无法根据相应的 CIS 基准控制措施修改或评估其中任何组件。但是,您可以评估和修复适用于工作器节点和工作负载的任何 CIS 基准控制措施。根据 GKE 共担责任模型,这些组件由您负责。

我们为 CIS 基准实现 GKE 安全的方法

GKE 是开源 Kubernetes 的托管式实现。我们完全管理控制平面,并负责保护控制平面组件的配置。下表介绍了我们可能会影响 CIS 基准评分的一些决定:

GKE 安全方法
身份验证
  • 一些 GKE 监控组件使用匿名身份验证来获取指标。GKE 允许对 kubelet 进行匿名身份验证,但是这种公开与只读端口相同,因为我们停用了其他调试处理程序。
  • 一些控制平面组件使用静态令牌启动,然后这些令牌被用于向 API 服务器进行身份验证。每次虚拟机启动或重启时,系统都会生成这些令牌。
准入控制器

GKE 会停用以下准入控制器:

  • EventRateLimit:这是 Kubernetes 中的 Alpha 版功能
  • AlwaysPullImages:此控制器为非合作多租户集群中的私有注册表映像提供一定程度的保护,但代价是使映像注册表在集群中创建新 pod 时出现单点故障。
  • SecurityContextDenyPod 安全准入控制器是首选,适用于所有 GKE 版本。 如果您使用 GKE Enterprise,则还可以使用 Policy Controller 启用 Pod 安全标准的强制执行。
  • ImagePolicyWebhook:GKE 默认情况下会停用 ImagePolicyWebhook,因为它有自己的映像管理和安全机制。这样,GKE 就可以保持对环境的更严格控制,并确保始终应用其安全做法。 但是,您可以使用 Binary Authorization 或 Policy Controller 管理政策。
审核日志记录 GKE 使用 GKE 审核政策捕获审核日志。 因此,我们无需设置任何 Kubernetes API 服务器审核日志记录标志。
调试 GKE 使用性能剖析进行调试。
加密
kubelet
  • GKE 会启用未经身份验证的 kubelet 只读端口。
  • 在 GKE Standard 模式下,您的工作负载可以根据需要修改内核默认设置。
  • GKE 会限制 kubelet 中的 Kubernetes 事件数量,以降低拒绝服务攻击的风险。
  • GKE 使用 mTLS 来保护 kubelet 与 API 服务器之间的流量。
  • 默认情况下,GKE 会轮替服务器证书,并在启用安全强化型 GKE 节点时轮替客户端证书。
  • GKE 使用 golang 默认允许的加密集,这也是 Kubernetes 的默认加密集。

根据 CIS 基准评估 GKE

您可以使用以下方法之一根据基准自动评估集群:

  • CIS GKE 基准:

    • 所有 GKE 版本
      • 运行 kube-bench 以根据基准评估工作器节点。如需了解详情,请参阅 kube-bench GitHub 代码库
      • 使用 Twistlock Defender 等第三方工具根据基准评估节点。
    • GKE Enterprise 版:使用合规性信息中心评估您的所有集群是否符合 CIS GKE 基准。如需了解详情,请参阅 GKE 合规性信息中心简介
  • CIS Kubernetes 基准:运行 kube-bench 以根据基准评估工作器节点。您无法根据基准中的建议评估托管式控制平面。

后续步骤