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 更关注运行时安全与供应链风险。

核心加固领域包括:

  1. Pod 安全: 限制特权容器、使用只读根文件系统、禁止 hostNetwork/hostPID。
  2. 网络隔离: 使用 NetworkPolicy 实现微隔离,默认拒绝所有入站流量。
  3. 供应链安全: 验证镜像签名、使用镜像扫描、限制镜像仓库来源。
  4. 日志与审计: 启用审计日志、监控关键 API 调用。
  5. 数据加密: 使用 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 策略引擎如何覆盖它们:

Kubernetes 安全基线层次与 Kyverno 覆盖范围 CIS Benchmark(集群配置基线) 检查 kube-apiserver、etcd、kubelet、RBAC 等组件配置 Kyverno 覆盖:策略类检查项(5.x 章节)+ 配置漂移检测 NSA/CISA 加固指南(联邦级威胁缓解) 供应链安全、网络隔离、日志审计、数据加密 Kyverno 覆盖:镜像验证、NetworkPolicy 生成、审计日志增强 Pod 安全标准 (PSA)(工作负载准入基线) Privileged / Baseline / Restricted 三级控制 Kyverno 覆盖:完全替代 PodSecurity 准入控制器 + 自定义规则 Kyverno 策略引擎 通过 Validate / Mutate / Generate 规则,将三层基线统一为可执行的策略代码

2.6 基线变更的挑战与自动化适配的必要性

安全基线并非一成不变。当 Kubernetes 版本升级、CIS Benchmark 更新或组织安全策略调整时,手动修改所有集群的配置和准入规则将变得不可持续。主要挑战包括:

  • 版本漂移: 不同集群运行不同 K8s 版本,对应的基线版本也不同。
  • 规则冲突: 开发团队可能申请“例外”,导致基线规则被绕过。
  • 审计缺失: 基线变更后,无法快速确认所有集群是否已同步更新。
自动化适配方案: 通过 Kyverno 的 策略集 (PolicySet) 和 集群策略 (ClusterPolicy),可以将基线规则定义为“代码”,并利用 GitOps 工作流进行版本管理。当基线变更时,只需更新策略仓库,Kyverno 会自动将新规则推送到所有集群,并生成合规报告。