3. 安全基线水位定义

安全基线水位是衡量集群合规状态的核心标尺。它定义了从“完全合规”到“严重违规”的离散水位等级,每个等级对应一组可量化的合规性判定条件。在 Gatekeeper 策略引擎中,水位直接决定变更门禁的放行策略与回滚触发阈值。

3.1 什么是安全基线水位

安全基线水位是对 Kubernetes 集群当前安全合规状态的数字化分级。它基于 OPA/Gatekeeper 策略的违反数量、违反严重程度、违反资源类型覆盖度三个维度综合计算得出。

核心公式(简化):

水位等级 = f(违反策略数, 最高违反级别, 受影响资源比例)

其中违反级别由策略模板中预定义的 severity 标签决定:low、medium、high、critical。

水位不是静态值,而是随集群资源变更实时演算的动态指标。每次变更请求(Admission Review)触发时,Gatekeeper 会评估变更后的预期水位,并与当前水位对比,决定是否放行。

3.2 水位等级划分(低/中/高/严重)

安全基线水位划分为四个等级,每个等级有明确的判定标准和业务含义:

水位等级 等级标识 判定条件 业务含义
低 L1 无违反策略,或仅存在 low 级别违反且数量 ≤ 3 集群处于理想安全状态,变更门禁完全开放
中 L2 存在 medium 级别违反,或 low 级别违反数量 > 3 集群存在可容忍风险,变更需人工确认
高 L3 存在 high 级别违反,或 medium 级别违反数量 ≥ 5 集群处于高风险状态,变更门禁收紧,需审批
严重 L4 存在 critical 级别违反,或 high 级别违反数量 ≥ 3 集群处于危险状态,变更门禁关闭,触发自动回滚

水位跃迁规则: 水位等级只允许逐级上升(L1→L2→L3→L4),不允许跳级。但水位下降时,允许跨级下降(例如 L4 可直接降至 L1),前提是所有高等级违反已被修复。

3.3 水位与合规性映射

合规性是指集群实际状态与安全基线之间的差距。水位等级直接映射为合规性评分和合规状态:

水位等级 合规性评分 合规状态 合规性描述
低 (L1) 90–100 ● 完全合规 所有策略均通过,无安全缺陷
中 (L2) 70–89 ● 基本合规 存在低风险违反,需在下一迭代修复
高 (L3) 40–69 ● 不合规 存在高风险违反,变更受限,需立即修复
严重 (L4) 0–39 ● 严重不合规 存在严重违反,变更冻结,自动回滚

合规性评分计算公式:

合规性评分 = 100 - (违反策略数 × 权重因子)

权重因子映射:
  low:     5
  medium:  10
  high:    20
  critical: 40

重要: 合规性评分仅用于水位等级的辅助判定。最终水位等级以“判定条件”表中的硬性规则为准,评分只作为参考指标。当评分与判定条件冲突时,以判定条件为准。

3.4 水位与策略模板的关联

每个 Gatekeeper 策略模板(ConstraintTemplate)必须声明 severity 标签,用于水位计算:

apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
  name: k8srequiredlabels
  annotations:
    security.baseline/severity: "high"   # 水位等级标签
    security.baseline/category: "identity"
spec:
  crd:
    spec:
      names:
        kind: K8sRequiredLabels
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8srequiredlabels
        violation[{"msg": msg}] {
          # 策略逻辑
        }

策略模板的 severity 标签决定了该策略违反时对水位的影响权重。一个 critical 级别的违反会直接将水位推至 L4,而 low 级别的违反需要累积多个才会影响水位。

3.5 水位与变更门禁的联动逻辑

下图展示了水位等级如何驱动变更门禁的决策流程:

水位与变更门禁联动决策流程 变更请求到达 水位评估(预期状态) 水位等级 判断 L1 自动放行 L2 人工确认放行 L3 审批后放行 说明:L4(严重)水位下变更请求被直接拒绝,并触发自动回滚流程,不进入放行分支