2. Kubernetes 安全基线标准:CIS Benchmark、PSS 与 PSP 演进

Kubernetes 安全基线是云原生安全巡检的“度量衡”。本章深入解析三大核心标准:CIS Kubernetes Benchmark(行业合规基线)、Pod Security Standards (PSS)(策略即代码)以及已废弃的 Pod Security Policy (PSP) 的演进路径。理解这些标准是编写 Kyverno 规则与 OPA 策略的前提。

2.1 CIS Kubernetes Benchmark:行业合规基线

CIS (Center for Internet Security) Kubernetes Benchmark 是由社区与安全专家共同维护的最佳实践配置指南,覆盖控制平面、Worker 节点、RBAC、Pod 安全等 240+ 项检查项。它分为多个级别:

级别 说明 典型检查项示例
Level 1 基础安全配置,直接影响集群安全 禁止匿名访问、启用审计日志、限制 kubelet 只读端口
Level 2 纵深防御,适用于高安全环境 Pod 使用只读根文件系统、启用 AppArmor/Seccomp
Automated 可通过工具自动检测的项 kube-bench 扫描结果、API Server 参数校验
Manual 需人工审计的项 证书管理流程、数据加密策略
巡检对齐点: Kyverno 和 OPA 可直接将 CIS 检查项转化为策略规则。例如,CIS 5.1.6 要求“确保 Pod 不设置 hostPID”,对应 Kyverno 规则:spec.rules[].validate.deny.conditions.any[].key = "spec.hostPID"。

2.2 Pod Security Standards (PSS):策略即代码

PSS 是 Kubernetes 1.23+ 原生支持的三种安全等级,通过 PodSecurity 准入控制器或 Kyverno/OPA 实现。它替代了 PSP 的复杂模型,采用声明式标签驱动:

  • Privileged:无限制,适用于特权容器(如网络插件)。
  • Baseline:最小限制,禁止 hostPID、hostNetwork、特权提升等。
  • Restricted:严格限制,强制只读根文件系统、非 root 用户、Seccomp 等。
实践建议: 在命名空间上添加标签 pod-security.kubernetes.io/enforce=restricted,即可自动拒绝违反 Restricted 级别的 Pod。Kyverno 可在此基础上补充自定义规则(如禁止挂载 Docker Socket)。
Pod Security Standards (PSS) 三级模型与策略映射 Privileged 无限制 特权容器、host 网络 Baseline 最小限制 禁止 hostPID/hostNetwork Restricted 严格限制 只读根文件系统、非 root 策略引擎层 Kyverno 规则 / OPA Rego 策略 / PodSecurity 准入控制器 命名空间标签:pod-security.kubernetes.io/enforce=restricted

2.3 Pod Security Policy (PSP) 的演进与退役

PSP 是 Kubernetes 1.21 之前的安全策略机制,通过 PodSecurityPolicy 资源定义 Pod 安全约束。但由于以下缺陷,已在 1.25 版本中彻底移除:

  • RBAC 耦合复杂:需要为每个 ServiceAccount 绑定 PSP,管理成本高。
  • 更新困难:修改 PSP 需要重启所有 Pod,影响业务。
  • 缺乏细粒度:无法按命名空间或标签灵活控制。
迁移警告: 如果集群仍在使用 PSP(K8s < 1.25),必须尽快迁移到 PSS + Kyverno/OPA 方案。Kyverno 提供 psp-migration 策略包,可自动将 PSP 规则转换为 Kyverno 策略。
PSP 到 PSS + Kyverno/OPA 演进路径 PSP (已废弃) K8s < 1.21 RBAC 耦合、更新困难 1.25 版本彻底移除 演进 PSS + Kyverno/OPA (推荐) K8s 1.23+ 原生支持 声明式标签、细粒度控制 可扩展自定义规则 迁移工具:Kyverno psp-migration 策略包 / OPA PSP 转换器 自动将 PSP 规则转换为 Kyverno ClusterPolicy 或 OPA Rego 规则

2.4 三大标准对比与协同

标准 定位 实现方式 与 Kyverno/OPA 关系
CIS Benchmark 合规基线检查 kube-bench 扫描、手动审计 作为策略规则来源,Kyverno 可自动修复
PSS Pod 安全等级 PodSecurity 准入控制器 / 标签 Kyverno 可增强 PSS(如自定义异常)
PSP (已废弃) 历史安全策略 PodSecurityPolicy 资源 需迁移到 PSS + Kyverno/OPA
协同巡检示例: 使用 Kyverno 同时检查 CIS 5.1.6(禁止 hostPID)和 PSS Restricted(禁止特权提升),一条规则即可覆盖两个标准:
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: cis-pss-combined
spec:
  rules:
  - name: deny-hostpid-privilege-escalation
    match:
      any:
      - resources:
          kinds:
          - Pod
    validate:
      message: "违反 CIS 5.1.6 和 PSS Restricted:禁止 hostPID 和特权提升"
      deny:
        conditions:
          any:
          - key: "{{ request.object.spec.hostPID }}"
            operator: Equals
            value: true
          - key: "{{ request.object.spec.containers[].securityContext.allowPrivilegeEscalation }}"
            operator: AnyIn
            value:
            - true