2. Kubernetes 安全基线概述:CIS Benchmark、NSA/CISA 加固指南与 Pod 安全标准 (PSA)
在实施自动化策略前,必须理解 Kubernetes 安全基线的三大支柱。它们分别从集群级配置审计、联邦级威胁缓解和工作负载级准入控制三个维度定义了安全基线。Kyverno 策略的核心目标之一,就是将这三类基线要求转化为可自动执行的策略规则。
2.1 三大安全基线的定位与对比
下表从来源、关注范围、检查方式与自动化适配难度四个维度,对三大基线进行横向对比:
| 基线名称 | 发布机构 | 关注范围 | 检查方式 | 自动化适配难度 |
|---|---|---|---|---|
| CIS Benchmark | CIS (Center for Internet Security) | 集群组件配置(kube-apiserver、etcd、kubelet 等) | 手动/工具扫描(kube-bench) | 中(需将配置检查转为策略规则) |
| NSA/CISA 加固指南 | NSA & CISA | 供应链安全、Pod 安全、网络隔离、日志审计 | 最佳实践清单 + 手动验证 | 高(需组合多种策略类型) |
| Pod 安全标准 (PSA) | Kubernetes SIG Security | Pod 级别的安全上下文(特权、Capabilities、Seccomp 等) | 内置准入控制器(PodSecurity) | 低(可直接映射为 Kyverno 规则) |
实践提示: 在 Kyverno 策略设计中,通常将 CIS Benchmark 作为集群配置的“硬底线”,将 NSA/CISA 指南 作为“增强层”,将 PSA 作为“工作负载准入的默认门禁”。三者结合,形成纵深防御。
2.2 CIS Benchmark for Kubernetes
CIS Benchmark 是业界最权威的 Kubernetes 安全配置基线。它针对每个集群组件(Master Node、Worker Node、etcd、RBAC 等)列出了具体的检查项和修复建议。
- 版本对应: 每个 Kubernetes 版本都有对应的 CIS Benchmark 版本(如 CIS Kubernetes V1.24 Benchmark v1.0.1)。
- 检查项分类: 主要分为 1(Master Node)、2(etcd)、3(Control Plane)、4(Worker Node)、5(Policies)等章节。
- 自动化工具:
kube-bench是官方推荐的扫描工具,但扫描结果需要人工修复。Kyverno 可以接管其中部分“策略类”检查项(如 5.x 章节的 Pod 安全策略)。
Kyverno 适配示例: CIS 5.2.1 要求“确保 Pod 不能以 privileged 模式运行”。在 Kyverno 中,这可以转化为一条
validate 规则,拒绝所有 securityContext.privileged: true 的 Pod。
2.3 NSA/CISA Kubernetes 加固指南
该指南由美国国家安全局 (NSA) 和网络安全与基础设施安全局 (CISA) 联合发布,侧重于缓解高级持续性威胁 (APT)。它比 CIS Benchmark 更关注运行时安全与供应链风险。
核心加固领域包括:
- Pod 安全: 限制特权容器、使用只读根文件系统、禁止 hostNetwork/hostPID。
- 网络隔离: 使用 NetworkPolicy 实现微隔离,默认拒绝所有入站流量。
- 供应链安全: 验证镜像签名、使用镜像扫描、限制镜像仓库来源。
- 日志与审计: 启用审计日志、监控关键 API 调用。
- 数据加密: 使用 etcd 加密、Secret 静态加密。
注意: NSA/CISA 指南中的部分建议(如“使用不可变基础设施”)无法通过单一准入策略实现,需要结合 CI/CD 流水线和运行时监控工具。Kyverno 主要负责“准入控制”和“策略即代码”部分。
2.4 Pod 安全标准 (PSA) 与 Pod 安全准入
PSA 是 Kubernetes 原生的工作负载安全基线,定义了三个等级:
| 等级 | 名称 | 核心限制 | 典型场景 |
|---|---|---|---|
| Privileged | 特权级 | 无限制(允许所有特权操作) | 系统组件、监控 Agent、网络插件 |
| Baseline | 基线级 | 禁止特权容器、禁止 hostNetwork、禁止 hostPID、限制 Capabilities | 大多数普通业务 Pod |
| Restricted | 严格限制级 | 在 Baseline 基础上,强制只读根文件系统、强制 Seccomp、强制非 root 用户 | 高安全敏感应用(金融、支付、医疗) |
PSA 通过 PodSecurity 准入控制器实现,但存在局限性:
- 只能检查 Pod 级别的安全上下文,无法检查 Deployment、StatefulSet 等上层资源。
- 无法自定义异常规则(如“允许特定命名空间使用 Privileged 等级”)。
- 无法生成详细的审计日志或告警。
Kyverno 的优势: Kyverno 可以完全替代 PodSecurity 准入控制器,并且支持更细粒度的规则(如“只允许特定镜像使用特权模式”),同时可以自动为不符合 PSA 的 Pod 添加标签或注解,实现“软性告警 + 硬性拒绝”的混合模式。
2.5 三大基线的层次关系与 Kyverno 的覆盖范围
下图展示了三大基线在 Kubernetes 安全架构中的层次,以及 Kyverno 策略引擎如何覆盖它们:
2.6 基线变更的挑战与自动化适配的必要性
安全基线并非一成不变。当 Kubernetes 版本升级、CIS Benchmark 更新或组织安全策略调整时,手动修改所有集群的配置和准入规则将变得不可持续。主要挑战包括:
- 版本漂移: 不同集群运行不同 K8s 版本,对应的基线版本也不同。
- 规则冲突: 开发团队可能申请“例外”,导致基线规则被绕过。
- 审计缺失: 基线变更后,无法快速确认所有集群是否已同步更新。
自动化适配方案: 通过 Kyverno 的 策略集 (PolicySet) 和 集群策略 (ClusterPolicy),可以将基线规则定义为“代码”,并利用 GitOps 工作流进行版本管理。当基线变更时,只需更新策略仓库,Kyverno 会自动将新规则推送到所有集群,并生成合规报告。