4. 准入策略框架:策略分层、引擎架构与执行点

镜像供应链的准入策略不能采用“一刀切”的单一规则集。不同业务场景、不同风险等级的镜像需要差异化的检查深度。本节将准入策略拆解为基础层、增强层、严格层三层模型,并阐述策略引擎的架构设计以及策略执行点的部署位置。

4.1 策略分层模型

策略分层依据镜像的来源、用途以及数据敏感度进行划分。每一层在检查项、阻断阈值和响应方式上均有明确区别。

策略层 适用场景 核心检查项 阻断阈值 响应方式
基础层 内部开发镜像、非生产环境 签名验证、基础CVE扫描、元数据完整性 仅阻断CRITICAL漏洞 记录告警,允许通过
增强层 第三方基础镜像、预发布环境 基础层 + 依赖溯源、SBOM一致性、密钥泄露检测 阻断CRITICAL + HIGH漏洞 阻断并生成工单
严格层 生产环境、涉及PII/金融数据 增强层 + 运行时行为基线、构建溯源、合规策略 阻断所有MEDIUM及以上漏洞 阻断并触发应急响应
实践建议: 建议为每个镜像仓库(Registry)的命名空间(Namespace)绑定一个默认策略层。例如 prod/* 命名空间自动继承严格层,dev/* 命名空间使用基础层,避免人工配置遗漏。

4.2 策略引擎架构

策略引擎是准入控制的核心决策单元。它接收镜像元数据与扫描结果,根据预定义策略规则输出“通过/阻断/告警”决策。下图展示了引擎的内部组件与数据流。

策略引擎架构图 策略引擎架构 镜像元数据输入 扫描结果输入 策略加载器 规则引擎 决策缓存 准入决策输出 审计日志 引擎工作流程: 1. 策略加载器从策略仓库拉取当前生效的策略层(基础/增强/严格) 2. 规则引擎将镜像元数据与扫描结果逐条匹配策略规则 3. 决策缓存记录最近1000条决策结果,相同镜像跳过重复计算
关键设计原则: 策略引擎必须保持无状态(除缓存外)和可水平扩展。每次准入决策仅依赖输入数据与策略规则,不依赖外部运行时状态,确保决策的一致性与高可用性。

4.3 策略执行点

策略执行点(Policy Enforcement Point, PEP)是策略引擎的“手脚”,负责在镜像供应链的关键节点拦截并执行决策。根据部署位置不同,PEP分为以下三类:

  • 构建阶段PEP(CI Pipeline): 集成在CI工具(如Jenkins、GitLab CI)中,在镜像构建完成后、推送至仓库前执行准入检查。阻断不合规镜像进入仓库。
  • 仓库阶段PEP(Registry Admission): 部署在镜像仓库(如Harbor、Docker Registry)的Webhook中,在镜像被拉取或推送时触发策略检查。适用于控制镜像分发。
  • 运行时阶段PEP(Kubernetes Admission): 通过Kubernetes的Admission Controller(如ValidatingWebhookConfiguration)实现,在Pod创建或更新时拦截并验证镜像是否满足准入策略。
执行点 触发时机 阻断粒度 典型工具
CI Pipeline 镜像构建完成 阻止推送 Trivy + OPA Gatekeeper
Registry Webhook 镜像推送/拉取 阻止分发 Harbor Webhook + Notary
K8s Admission Pod创建/更新 阻止调度 Kyverno / OPA Gatekeeper
常见误区: 仅依赖运行时阶段的K8s Admission Controller作为唯一执行点。如果镜像在构建阶段已携带严重漏洞,运行时阻断虽然能阻止Pod启动,但镜像仍存在于仓库中,可能被其他环境拉取。建议采用多层执行点叠加策略,构建阶段阻断 > 仓库阶段拦截 > 运行时兜底。

4.4 策略分层与执行点的映射关系

不同策略层应映射到不同的执行点组合,以实现成本与安全性的平衡。

  • 基础层: 仅在CI Pipeline执行一次检查,仓库与运行时阶段不做额外验证。适用于开发环境,减少延迟。
  • 增强层: CI Pipeline + Registry Webhook双重检查。CI阶段阻断明显违规,仓库阶段对已通过的镜像做二次校验,防止绕过。
  • 严格层: CI Pipeline + Registry Webhook + K8s Admission三层全量检查。运行时阶段额外验证镜像签名是否过期、运行时基线是否合规。
策略分层与执行点映射 策略分层与执行点映射 基础层 → CI Pipeline 增强层 → CI + Registry 严格层 → CI + Registry + K8s 执行点选择建议: • 基础层:仅CI检查,延迟最低,适合开发迭代 • 增强层:CI + Registry,平衡安全与效率 • 严格层:三层全量,适用于生产与合规场景 • 所有层均需配置审计日志,用于事后追溯 • 策略变更需灰度发布,避免大面积阻断
落地检查清单: 在实施准入策略框架时,请确认以下三点:
1. 每个镜像仓库命名空间是否已绑定正确的策略层?
2. 策略引擎是否具备缓存能力,避免重复扫描相同镜像?
3. 三个执行点(CI/Registry/K8s)的日志是否统一汇聚到安全运营平台?