CIS 扫描

Rancher 可以通过运行安全扫描来检查 Kubernetes 是否按照 CIS Kubernetes Benchmark 中定义的安全最佳实践进行部署。CIS 扫描可以运行在任何 Kubernetes 集群,包括托管的 Kubernetes,例如 EKS、AKS 和 GKE。

rancher-cis-benchmark 应用使用了 kube-bench, ,这是 Aqua Security 的开源工具,用于检查集群是否符合 CIS Kubernetes Benchmark。此外,为了生成集群级别的报告,此应用使用了 Sonobuoy 来聚合报告。

关于 CIS Benchmark

CIS(Center for Internet Security)是一个 501(c)(3) 非营利组织,成立于 2000 年 10 月,其使命是识别、开发、验证、促进和维持网络防御的最佳实践方案,并建立和指导社区,以在网络空间中营造信任的环境。该组织总部位于纽约东格林布什,其成员包括大公司、政府机构和学术机构。

CIS Benchmark 是目标系统安全配置的最佳实践。CIS Benchmark 是由安全专家、技术供应商、公开和私人社区成员,以及 CIS Benchmark 开发团队共同志愿开发的。

在 CIS 网站上注册以查看官方 Benchmark 文档。

关于生成的报告

每次扫描都会生成一份报告,你可以在 Rancher UI 中查看该报告,并以 CSV 格式下载它。

默认情况下使用 CIS Benchmark v1.6。

Benchmark 版本包含在生成的报告中。

Benchmark 提供两种类型的建议,分别是自动(Automated)和手动(Manual)。Benchmark 中标记为 Manual 的建议不包含在生成的报告中。

一些测试会被标记为“不适用”。由于 Rancher 配置 RKE 集群的方式,这些测试不会在任何 CIS 扫描中运行。有关如何审核测试结果,以及为什么某些测试会被标记为不适用,请参阅 Rancher 的 Kubernetes 对应版本的自测指南

该报告包含以下信息:

报告中的列描述
idCIS Benchmark 的 ID 号。
descriptionCIS Benchmark 测试的描述。
remediation为了通过测试需要修复的内容。
state测试的状态,可以是通过、失败、跳过或不适用。
node_type节点角色,角色决定了在节点上运行的测试。主测试在 controlplane 节点上运行,etcd 测试在 etcd 节点上运行,节点测试在 Worker 节点上运行。
audit这是 kube-bench 为此测试运行的审计检查。
audit_config适用于审计脚本的任何配置。
test_infokube-bench 报告的测试相关信息(如果存在)。
commandskube-bench 报告的测试相关的命令(如果存在)。
config_commandskube-bench 报告的测试相关的配置数据(如果存在)。
actual_value测试的实际值。如果由 kube-bench 报告,则会显示。
expected_result测试的预期值。如果由 kube-bench 报告,则会显示。

请参阅集群加固指南中的表格,以了解 Kubernetes、Benchmark、Rancher 以及我们的集群强化指南的版本对应关系。另外,请参阅强化指南,以获取符合 CIS 的集群的配置文件以及修复失败测试的信息。

测试配置文件

以下是可用的配置文件:

  • Generic CIS 1.6
  • Generic CIS 1.20
  • Generic CIS 1.23
  • RKE permissive 1.6
  • RKE hardened 1.6
  • RKE permissive 1.20
  • RKE hardened 1.20
  • RKE permissive 1.23
  • RKE hardened 1.23
  • RKE2 permissive 1.6
  • RKE2 hardened 1.6
  • RKE2 permissive 1.20
  • RKE2 hardened 1.20
  • RKE2 permissive 1.23
  • RKE2 hardened 1.23
  • K3s permissive 1.6
  • K3s hardened 1.6
  • K3s permissive 1.20
  • K3s hardened 1.20
  • K3s permissive 1.23
  • K3s hardened 1.23
  • AKS
  • EKS
  • GKE

你还可以通过保存一组要跳过的测试来自定义配置文件。

所有配置文件都会有一组不适用的测试,CIS 扫描会跳过这些测试。RKE 集群管理 Kubernetes 的方式导致这些测试被认为不适用。

RKE 集群扫描配置文件有两种类型:

  • Permissive:此配置文件有一组要跳过的测试,跳过的原因是这些测试会在默认的 RKE Kubernetes 集群上失败。除了跳过的测试列表之外,配置文件也不会运行不适用的测试。
  • Hardened:此配置文件不会跳过任何测试(不适用的测试除外)。

EKS 和 GKE 集群扫描的配置文件基于这些集群类型特定的 CIS Benchmark 版本。

要通过 “Hardened” 配置文件,你需要遵从强化指南并使用强化指南中定义的 cluster.yml 来配置一个强化集群。

默认配置文件和支持的 CIS Benchmark 版本取决于扫描的集群类型:

rancher-cis-benchmark 支持 CIS 1.6 Benchmark 版本。

  • RKE Kubernetes 集群默认使用 RKE Permissive 1.6 配置文件。
  • EKS 和 GKE 有自己的 CIS Benchmark,由 kube-bench 发布。这些集群默认使用相应的测试配置文件。
  • RKE2 Kubernetes 集群默认使用 RKE2 Permissive 1.6 配置文件。
  • RKE、RKE2、EKS 和 GKE 以外的集群类型默认使用 Generic CIS 1.5 配置文件。

跳过和不适用的测试

有关要跳过和不适用的测试列表,请参阅此页面

目前,只有用户定义的跳过测试会在生成报告中标记为跳过。

如果某个默认配置文件将某个测试定义为跳过,则该测试也会标记为不适用。

RBAC

有关权限的详细信息,请参阅此页面

配置

有关为扫描、配置文件和 Benchmark 版本配置自定义资源的更多信息,请参阅此页面

操作指南

要了解如何运行 CIS 扫描,请参阅 CIS 扫描指南