3. K8s 策略评审流程:策略定义、策略分发、策略执行、策略审计与报告

K8s 策略评审是保障集群安全与合规的核心环节。一个完整的策略评审流程通常包含四个阶段:策略定义、策略分发、策略执行与策略审计与报告。这四个阶段形成闭环,确保策略从制定到落地的可追溯性与一致性。

核心原则:策略即代码(Policy as Code)。所有策略应声明式定义、版本化管理、自动化分发与执行,最终通过审计报告验证合规状态。

3.1 策略定义

策略定义是流程的起点,决定了集群的安全基线。策略通常以 OPA/Gatekeeper 的 ConstraintTemplate 与 Constraint、Kyverno 的 ClusterPolicy 或自定义准入 Webhook 的形式存在。

策略类型 定义方式 典型工具 示例场景
准入控制策略 Rego / YAML OPA Gatekeeper 禁止特权容器
变异策略 YAML / JSON Patch Kyverno 自动注入 Sidecar
网络策略 NetworkPolicy YAML Calico / Cilium 限制 Pod 间通信
资源配额策略 ResourceQuota / LimitRange K8s 原生 限制 Namespace 资源上限
最佳实践:策略定义应遵循 DRY(Don't Repeat Yourself)原则,将通用规则抽象为模板,通过参数化实现不同环境的差异化配置。

3.2 策略分发

策略分发确保定义好的策略能够一致地部署到目标集群。分发方式包括 GitOps 流水线、Operator 自动同步、以及 Helm Chart 批量部署。

  • GitOps 模式:将策略 YAML 存储在 Git 仓库,通过 ArgoCD 或 Flux 自动同步到集群。
  • Operator 模式:使用 Gatekeeper Operator 或 Kyverno Operator 管理策略的生命周期。
  • 多集群分发:通过 Cluster API 或 Rancher 将策略模板分发到多个集群,确保一致性。
常见风险:策略分发时未考虑集群版本差异,导致旧版本集群无法识别新策略字段。建议在分发前执行 kubectl dry-run 或使用策略模拟工具验证兼容性。

3.3 策略执行

策略执行是策略生效的关键阶段。K8s 提供多种执行点:准入控制(Admission Control)、运行时审计(Audit)与周期性扫描(Reconcilation)。

# 示例:Gatekeeper 准入控制日志
{
  "level": "info",
  "msg": "admission review",
  "resource": "Pod",
  "namespace": "production",
  "constraint": "block-privileged-containers",
  "allowed": false,
  "reason": "Container 'app' has securityContext.privileged=true"
}

执行模式对比:

执行模式 触发时机 阻断能力 性能影响 适用场景
准入控制 资源创建/更新时 强阻断 中等 安全基线、合规检查
运行时审计 资源运行期间 仅告警 低 异常行为检测
周期性扫描 定时执行 事后修复 低 配置漂移检测
执行策略:对于生产环境,建议将关键安全策略设置为“准入控制+强阻断”,将非关键策略设置为“运行时审计+告警”,避免过度阻断影响业务。

3.4 策略审计与报告

审计与报告是策略闭环的最后一步,用于验证策略是否被正确执行、是否存在违规资源、以及策略本身是否需要更新。

  • 审计数据来源:K8s Audit Logs、Gatekeeper Audit、Kyverno Report、自定义 Webhook 日志。
  • 报告内容:违规资源列表、策略命中率、策略覆盖率、合规趋势。
  • 工具链:Falco(运行时审计)、kube-bench(CIS 基准)、OPA 审计 API、Prometheus + Grafana(可视化)。
# 查看 Gatekeeper 审计结果
kubectl get constrainttemplates
kubectl get constraints
kubectl get k8srequiredlabels.constraints.gatekeeper.sh -o yaml
审计频率建议:核心安全策略(如禁止特权容器)建议每小时审计一次;资源配额策略可每天审计一次;网络策略建议实时审计。
K8s 策略评审流程闭环 策略定义 Rego / YAML / 模板 策略分发 GitOps / Operator 策略执行 准入 / 审计 / 扫描 审计与报告 合规 / 违规 / 趋势 闭环反馈:审计报告中的违规数据驱动策略定义更新,形成持续改进的安全治理循环 建议每季度进行一次策略评审,根据审计报告调整策略参数与执行模式

3.5 策略评审清单

在实际评审过程中,建议按照以下清单逐项检查:

评审阶段 检查项 通过标准
策略定义 策略是否版本化管理?是否包含参数化模板? Git 仓库中至少包含 3 个版本标签
策略分发 分发流水线是否自动化?是否覆盖所有目标集群? CI/CD 流水线成功率 > 99%
策略执行 关键策略是否启用准入控制?非关键策略是否启用审计? 无特权容器违规事件
审计与报告 审计日志是否持久化?报告是否定期生成? 审计数据保留 > 90 天,周报自动发送
常见误区:只关注策略定义与执行,忽略审计与报告环节。没有审计反馈的策略评审是单向的、不可持续的,最终会导致策略与实际运行状态脱节。