2. 核心概念:配置合规、环境一致性、基线、漂移、审计、策略即代码的定义与关系
在 Kubernetes 集群运维与安全治理中,理解核心概念是建立有效核验流程的前提。本章将逐一拆解六个关键术语的定义,并通过对比表格与关系图厘清它们之间的逻辑链条。
2.1 核心概念定义
| 概念 | 英文 | 定义 | K8s 场景示例 |
|---|---|---|---|
| 配置合规 | Configuration Compliance | 集群资源配置与安全策略、行业标准(如 CIS Benchmark、PCI DSS)或组织内部规范的一致性程度。 | Pod 必须设置 readOnlyRootFilesystem: true;禁止使用 privileged: true。 |
| 环境一致性 | Environment Consistency | 不同环境(开发、测试、预发布、生产)之间在 Kubernetes 版本、组件配置、资源配额、网络策略等方面的可重复性与对齐程度。 | 开发环境与生产环境使用相同的 Ingress Controller 版本和 RBAC 配置。 |
| 基线 | Baseline | 经过审批的、可接受的集群配置与安全状态的基准快照,是合规与一致性核验的参考点。 | 一份 YAML 清单定义了所有 Namespace 必须包含的 NetworkPolicy 和 ResourceQuota。 |
| 漂移 | Drift | 集群实际运行状态与基线之间的偏差。漂移是合规失效和环境不一致的直接原因。 | 运维人员手动修改了 kube-system 下的 ConfigMap,导致与 Git 仓库中的基线版本不一致。 |
| 审计 | Audit | 对集群操作、配置变更、访问记录进行系统性记录、审查与验证的过程,用于追溯漂移和评估合规状态。 | 启用 Kubernetes Audit Log,记录谁在何时修改了 Deployment 的镜像版本。 |
| 策略即代码 | Policy as Code (PaC) | 将合规规则、安全约束、治理策略以机器可读的代码形式声明、版本化、自动化执行。 | 使用 OPA/Gatekeeper 编写 Rego 策略,强制所有 Ingress 必须配置 TLS。 |
关键区分: 基线是“期望状态”,合规是“与期望状态的匹配度”,漂移是“实际状态与期望状态的差值”。策略即代码是“定义和强制执行期望状态的手段”。
2.2 概念关系:从策略到审计的闭环
六个概念并非孤立存在,而是构成一个持续治理的闭环。下图展示了从策略定义到审计反馈的核心流程。
2.3 概念关系矩阵
下表从“依赖关系”和“驱动关系”两个维度,进一步明确各概念之间的相互作用。
| 概念 A | 概念 B | 关系类型 | 说明 |
|---|---|---|---|
| 策略即代码 | 基线 | 定义 / 生成 | PaC 策略经过编译或渲染后,形成可执行的基线配置清单。 |
| 基线 | 配置合规 | 参考 / 度量 | 合规检查以基线为唯一参考标准,偏离基线即视为不合规。 |
| 基线 | 环境一致性 | 统一 / 对齐 | 多环境共享同一基线,是保证环境一致性的前提。 |
| 漂移 | 配置合规 | 负向 / 破坏 | 漂移是导致合规失效的直接原因,漂移量越大,合规度越低。 |
| 漂移 | 环境一致性 | 偏差 / 差异 | 不同环境之间的漂移差异,直接导致环境不一致。 |
| 审计 | 漂移 | 检测 / 记录 | 审计日志是发现和追溯漂移的主要数据源。 |
| 审计 | 策略即代码 | 反馈 / 优化 | 审计结果揭示策略盲区或误报,驱动 PaC 策略的迭代更新。 |
2.4 策略即代码:连接所有概念的枢纽
在 Kubernetes 生态中,策略即代码 (PaC) 是贯穿整个治理体系的核心枢纽。它通过声明式语言将安全与合规规则代码化,实现自动化执行与版本管理。
PaC 在核验流程中的三个关键作用:
- 基线固化: 将基线从静态文档转化为可执行的代码(如 OPA 策略、Kyverno 规则)。
- 漂移预防: 在 Admission Controller 阶段拦截违反策略的请求,从源头阻止漂移发生。
- 审计增强: 策略执行日志本身就是审计数据的一部分,提供结构化的合规证据。
以下是一个使用 Kyverno 实现策略即代码的简单示例,该策略强制所有 Pod 必须设置 readOnlyRootFilesystem:
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-readonly-rootfs
spec:
validationFailureAction: Enforce
rules:
- name: check-readonly-rootfs
match:
any:
- resources:
kinds:
- Pod
validate:
message: "所有容器必须设置 readOnlyRootFilesystem: true"
pattern:
spec:
containers:
- securityContext:
readOnlyRootFilesystem: true
常见误区: 不要将“基线”等同于“策略即代码”。基线是“是什么”(期望状态),PaC 是“怎么做”(实现手段)。一个基线可能由多条 PaC 策略共同定义,也可能包含非代码化的配置项(如手动批准的例外清单)。
2.5 本章小结
六个核心概念构成了 Kubernetes 配置合规与环境一致性治理的完整语义网络:
- 策略即代码 是治理的起点,它将规则代码化。
- 基线 是治理的标尺,定义了期望状态。
- 配置合规 与 环境一致性 是治理的目标。
- 漂移 是治理的敌人,是导致目标失效的根源。
- 审计 是治理的眼睛,提供可见性与反馈。