kyverno是kubernetes原生策略引擎,通过clusterpolicy以yaml声明式实现cis等安全基线的实时准入控制、自动修正与后台持续扫描,支持validate/mutate/generate三类规则,覆盖禁止特权容器、强制资源限制、禁用主机网络等关键控制项,并提供policyreport和事件审计保障持续合规。

Kyverno 是 Kubernetes 原生的策略引擎,专为“策略即代码”(Policy-as-Code)设计,能直接在 API 层拦截、校验、修改或生成资源,无需额外语言(如 Rego),非常适合落地 CIS、NIST 或内部安全基线。它不依赖外部扫描器,而是把基线要求变成实时生效的准入规则和后台持续校验机制。
用 ClusterPolicy 定义统一安全基线
Kyverno 的 ClusterPolicy 是实施集群级基线的核心载体。所有策略以 YAML 声明,集中管理、版本可控,天然适配 GitOps 流程。关键点在于:策略作用范围是整个集群,且自动覆盖新增命名空间与资源,避免遗漏。
- 策略类型按用途区分:Validate(阻断违规创建)、Mutate(自动补全默认值)、Generate(自动创建配套资源,如 ResourceQuota 或 NetworkPolicy)
- 匹配逻辑支持 kind、name、namespace、label selector 和通配符,可精准控制适用范围(例如仅对 production 命名空间生效)
- 每条规则可设
validationFailureAction: Enforce(强制拒绝)或Audit(仅记录告警),便于灰度上线
落地典型 CIS 基线控制项
将 CIS Kubernetes Benchmark 中高频项转化为 Kyverno 策略,实现开箱即用的安全防护:
评估 Kubernetes 集群安全态势,覆盖 RBAC、工作负载安全、网络策略、基础设施即代码(IaC)、运行时监控和密钥管理等 30 项控制项……
-
禁止特权容器(CIS 5.2.1):用
pattern强制securityContext.privileged: false,任何 Pod 创建时若含privileged: true将被立即拒绝 -
强制设置资源请求与限制(CIS 5.7.1):校验每个容器的
resources.requests和limits字段非空,支持通配符"?*"表示“必须存在且非空” -
禁用主机网络(CIS 5.2.2):通过
spec.hostNetwork: false拦截使用宿主机网络的 Pod -
防止以 root 运行(CIS 5.2.3):要求
securityContext.runAsNonRoot: true,杜绝容器默认以 UID 0 启动
自动化补全与资源生成
安全基线不仅是“禁止什么”,还包括“必须有什么”。Kyverno 可主动注入合规配置,降低人工出错率:
- 新命名空间创建时,自动 Generate 一个 ResourceQuota,限定 CPU、内存上限,避免资源耗尽
- 为每个命名空间自动生成默认 NetworkPolicy,默认拒绝所有入站/出站流量,再由业务方显式放行
- 用 Mutate 规则为 Pod 注入安全上下文字段(如
readOnlyRootFilesystem: true),即使用户未声明也自动补齐
持续合规与可观测性
Kyverno 不只管“新建”,还管“存量”。通过后台扫描(background scan),它会定期检查已有资源是否符合策略,并生成 PolicyReport 或 ClusterPolicyReport 对象:
- 报告中列出所有违规资源、违反的规则、时间戳,可直接用
kubectl get polr -A查看 - 结合 Prometheus + Grafana,可构建基线合规率看板(如“Pod 资源限制合规率 98.2%”)
- 所有策略执行事件写入 Kubernetes Event,便于审计追踪










