2. Kubernetes 安全基线概述:CIS Kubernetes Benchmark、Pod 安全标准 (PSA/PSS)、常见安全基线要求
在云原生安全基线冷启动场景中,理解 Kubernetes 自身的安全基线体系是策略加载优化的前提。Kubernetes 安全基线并非单一标准,而是由行业基准、内置准入控制与社区最佳实践共同构成的层次化框架。本节将围绕 CIS Kubernetes Benchmark、Pod 安全标准 (PSA/PSS) 以及常见安全基线要求展开,为后续 Kyverno 策略映射提供结构化依据。
2.1 CIS Kubernetes Benchmark:行业合规基准
CIS (Center for Internet Security) Kubernetes Benchmark 是目前业界最权威的 Kubernetes 安全配置审计标准。它针对不同 Kubernetes 版本(如 v1.24、v1.25、v1.26 等)发布对应的检查项清单,覆盖控制平面组件、工作节点、Pod 安全、网络策略、RBAC 等多个维度。
CIS Kubernetes Benchmark 的检查项通常分为以下几类:
| 分类编号 | 分类名称 | 典型检查项示例 | 冷启动关联度 |
|---|---|---|---|
| 1.x | 控制平面安全配置 | API Server 匿名认证禁用、--authorization-mode 包含 Node/RBAC | 高(影响集群级策略) |
| 2.x | etcd 安全配置 | etcd 证书认证、TLS 加密、数据目录权限 | 中(基础设施层) |
| 3.x | 控制平面组件配置 | Controller Manager、Scheduler 的 TLS 与绑定地址 | 中 |
| 4.x | 工作节点安全配置 | kubelet 匿名认证禁用、--read-only-port 关闭 | 高(节点级策略) |
| 5.x | Pod 安全与策略 | Pod 不应以 root 运行、不应挂载 Docker socket、SecurityContext 配置 | 极高(直接映射 Kyverno 策略) |
| 6.x | 网络策略与 CNI | 默认命名空间应配置网络策略、禁止 HostNetwork | 高 |
| 7.x | RBAC 与审计 | 最小权限原则、审计日志启用、ServiceAccount 自动挂载控制 | 高 |
2.2 Pod 安全标准 (PSA/PSS):Kubernetes 原生准入控制
Pod 安全标准 (Pod Security Standards, PSS) 是 Kubernetes v1.23+ 内置的准入控制框架,取代了废弃的 PodSecurityPolicy (PSP)。PSS 定义了三个安全等级,通过 Pod Security Admission (PSA) 控制器在命名空间级别实施。
三个安全等级的定义与策略要求如下:
| 等级 | 名称 | 策略严格度 | 典型限制 | 适用场景 |
|---|---|---|---|---|
| Privileged | 特权级 | 无限制 | 无额外限制,允许特权容器、HostNetwork、HostPID 等 | 系统组件、监控 Agent、特权运维工具 |
| Baseline | 基线级 | 中等 | 禁止特权容器、禁止 HostPID/IPC、禁止 NET_RAW、限制 seccomp 等 | 大多数通用工作负载 |
| Restricted | 严格级 | 最严格 | Baseline 全部限制 + 禁止 NET_RAW、强制只读根文件系统、强制非 root 用户、强制 seccomp=RuntimeDefault | 高安全敏感应用、金融/合规场景 |
PSA 通过命名空间标签 pod-security.kubernetes.io/enforce、pod-security.kubernetes.io/audit、pod-security.kubernetes.io/warn 分别控制强制、审计、警告三种模式。
# 示例:为命名空间设置 Restricted 强制等级
apiVersion: v1
kind: Namespace
metadata:
name: production-secure
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/enforce-version: latest
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
2.3 常见安全基线要求:从 CIS 到 PSS 的落地映射
在实际冷启动场景中,团队通常需要将 CIS Benchmark 的检查项与 PSS 等级进行映射,形成可执行的策略清单。以下表格展示了常见安全基线要求及其在 CIS 和 PSS 中的对应关系:
| 安全基线要求 | CIS 检查项编号 | PSS 等级 | Kyverno 策略类型 | 冷启动优先级 |
|---|---|---|---|---|
| 禁止特权容器 | 5.2.1 | Baseline / Restricted | validate (deny) | P0 |
| 禁止容器以 root 运行 | 5.2.6 | Restricted | mutate (注入 runAsNonRoot) + validate | P0 |
| 限制容器添加 Linux Capabilities | 5.2.7 | Baseline / Restricted | validate (deny ADD, allow DROP) | P1 |
| 禁止 HostNetwork / HostPID / HostIPC | 5.2.2 | Baseline / Restricted | validate (deny) | P0 |
| 强制只读根文件系统 | 5.2.9 | Restricted | mutate (注入 readOnlyRootFilesystem) | P1 |
| 禁止挂载 Docker socket | 5.2.5 | Baseline | validate (deny hostPath) | P0 |
| 强制 seccomp 配置 | 5.2.11 | Restricted | mutate (注入 seccompProfile) | P1 |
| 最小 RBAC 权限 | 7.1.x | N/A (集群级) | validate (检查 ClusterRole/Role 规则) | P0 |
| 默认命名空间网络策略 | 6.1.1 | N/A (网络层) | generate (自动创建 NetworkPolicy) | P1 |
- P0 策略(如禁止特权容器、禁止 root 运行)应在集群初始化时同步加载,作为准入控制的强制门禁。
- P1 策略(如只读根文件系统、seccomp)可采用异步加载 + mutate 修复模式,在冷启动阶段先注册 validate 规则,mutate 规则延迟 5-10 秒加载,避免启动风暴。
- 生成类策略(如自动创建 NetworkPolicy)应在冷启动完成后,通过后台控制器逐步生效,不阻塞 Pod 创建。
2.4 常见安全基线要求的落地原则
在冷启动场景下,将安全基线要求转化为 Kyverno 策略时,应遵循以下原则:
- 分层映射原则:将 CIS 检查项映射到 PSS 等级,再映射到 Kyverno 策略。避免直接编写“CIS 检查项策略”,而是以 PSS 等级为中间层,提高策略的可移植性。
- 最小化准入延迟原则:冷启动阶段,只注册必须的 validate/deny 策略;mutate 和 generate 策略可以延迟加载或异步执行。
- 异常豁免机制:为系统组件(如 kube-system、ingress-nginx)预留豁免标签,避免基线策略误拦截关键组件。
- 审计优先原则:在冷启动初期,对不确定的基线要求先采用
audit模式(仅记录不拒绝),待策略稳定后再切换为enforce模式。
pod-security.kubernetes.io/enforce: baseline),然后让 Kyverno 策略根据命名空间标签自动匹配生效范围。这样可以在策略加载完成前,先由 PSA 提供一层基础保护。