Kubernetes集群的安全配置涉及多个组件,包括API Server、etcd、controller manager、scheduler、kubelet以及节点操作系统。CIS(Center for Internet Security)为Kubernetes制定了一套详细的基线建议,每一项都有编号、描述和修复命令。面对上百条规则,手工逐台节点核对既耗时又容易遗漏,因此借助自动化扫描工具成为更可靠的选择。kube-bench是Aqua Security开源的专门针对CIS Kubernetes基准的扫描器,它能直接读取集群配置文件、进程参数和权限设置,输出每项规则的PASS或FAIL状态。

接下来我们会从工具价值、安装运行和报告解读三个层面展开,帮助读者把CIS合规检查变成日常运维的一部分。
一、CIS基准与扫描工具的核心作用
CIS基准并不是官方强制标准,但它在业界被广泛接受。Kubernetes CIS基准通常按版本划分,例如针对1.28版本的建议与1.24版本存在差异。基准覆盖了控制平面组件、工作节点、网络策略、RBAC和日志审计等维度。每条建议包含检查命令和修复步骤,非常适合自动化。kube-bench内置了这些规则,通过读取实际运行环境来判定配置是否达标。
除了kube-bench,还有其他工具可以辅助安全审计。kube-hunter更偏向主动攻击模拟,用来发现集群暴露面;Polaris主要检查工作负载的配置最佳实践;而kube-bench专注于主机和集群组件层面的CIS基准。实际工作中通常会把kube-bench作为合规扫描的首选,因为它直接对应CIS编号,便于出具审计报告。扫描结果可以直接用于内部安全评审或外部合规证明,减少了人工整理证据的时间。
二、kube-bench安装与运行方法
kube-bench提供了多种安装方式。最简单的是下载预编译二进制文件,无需额外依赖。下面是在Linux控制平面节点上的安装命令。
curl -L https://github.com/aquasecurity/kube-bench/releases/download/v0.6.15/kube-bench_0.6.15_linux_amd64.tar.gz -o kube-bench.tar.gz tar -xzf kube-bench.tar.gz ./kube-bench --version
另一种常见方式是直接用容器运行,这样可以避免二进制文件与系统库的兼容问题。容器模式需要挂载宿主机关键目录,以便kube-bench读取配置文件。
docker run --rm -v /etc:/etc -v /var:/var -v /usr:/usr -v /lib:/lib -v /opt:/opt aquasec/kube-bench:latest --version 1.28
参数中的--version并不是打印工具版本,而是指定目标Kubernetes的版本号,用来加载对应的CIS规则集。如果不指定,kube-bench会尝试自动探测。对于托管集群如EKS、GKE、AKS,kube-bench也提供了对应的基准包,运行方式类似。扫描过程通常只读,不会修改任何配置,但建议在非生产窗口执行,因为部分检查会读取大量文件或执行短暂命令。为了获得稳定的结果,最好在控制平面节点上运行,因为很多规则只与etcd、API Server等控制组件相关。
三、解读扫描报告并实施修复
运行kube-bench后,终端会输出类似下面的报告片段。每一项包含编号、描述和状态。
[PASS] 1.1.1 Ensure that the API server pod specification file permissions are set to 644 or more restrictive [FAIL] 1.2.21 Ensure that the --profiling argument is set to false [WARN] 1.3.2 Ensure that the --kubelet-https argument is set to true
状态PASS表示配置符合建议,FAIL表示未达标,WARN表示无法自动判定或需要人工确认。修复FAIL项时,要优先处理影响面较大的控制平面组件。例如1.2.21对应的--profiling参数如果开启,会暴露调试接口,增加信息泄露风险。修复方法是编辑kube-apiserver的静态Pod配置文件,通常位于/etc/kubernetes/manifests/kube-apiserver.yaml。在command字段中移除或设置为false。
spec:
containers:
- command:
- kube-apiserver
- --profiling=false
- --tls-cert-file=/etc/kubernetes/pki/apiserver.crt
修改后kubelet会自动重启该静态Pod,再运行一次kube-bench确认该项变为PASS。值得注意的是,有些FAIL项可能与集群架构有关,例如云厂商托管控制平面无法直接修改配置,此时可以把该项标记为不适用或通过例外清单管理。kube-bench支持--json输出,方便集成到监控系统或CI流水线中。将JSON结果解析后可以生成趋势图,帮助团队观察合规状态的变化。
为了持续跟踪合规状态,建议将kube-bench加入定期任务,例如每周在测试集群运行一次,并把结果存储到Elasticsearch或Prometheus。这样可以在配置漂移时及时告警。另外,kube-bench还提供了--config参数加载自定义规则,适合企业内部有额外安全要求的情况。通过自动化扫描和持续监控,Kubernetes CIS合规不再是一次性审计,而是成为可度量的日常指标。最终可以把扫描结果与告警系统联动,当出现新的FAIL项时自动通知安全团队,从而形成一个闭环。
Kubernetes CIS基准kube-bench安全扫描修改时间:2026-08-30 00:21:31