3、信任边界模型:零信任架构在供应链中的应用、信任边界定义、策略执行点(PEP)与策略决策点(PDP)
3.1 零信任架构在镜像供应链中的核心原则
传统安全模型依赖网络边界防御,一旦攻击者突破外围防火墙,内部系统便暴露在风险中。镜像供应链涉及镜像构建、仓库存储、分发部署、运行时监控等多个环节,攻击面广泛且链路复杂。零信任架构(Zero Trust Architecture, ZTA)在供应链中的应用,彻底摒弃“内网可信”的假设,对每一个访问请求、每一次镜像拉取、每一行配置变更都进行显式验证。
零信任在镜像供应链中的三大核心原则:
- 始终验证(Never Trust, Always Verify): 无论请求来自内部CI/CD管道还是外部开发者,每次镜像拉取、签名验证、策略查询都必须经过身份认证和授权检查。
- 最小权限(Least Privilege): 每个组件(构建节点、仓库客户端、部署代理)仅获得完成其任务所需的最小权限集,禁止默认开放或过度授权。
- 假设受损(Assume Breach): 默认认为网络、端点、管道可能已被入侵,所有通信必须加密,所有操作必须审计,所有信任关系必须动态评估。
3.2 信任边界定义:从物理网络到逻辑策略域
在零信任模型中,信任边界不再是路由器或防火墙围起来的物理网段,而是由策略决策点(PDP)和策略执行点(PEP)共同定义的逻辑策略域。每个策略域对应一组明确的访问规则、加密要求、审计级别和风险阈值。
镜像供应链中的典型信任边界划分:
| 信任边界域 | 包含组件 | 信任等级 | 典型策略要求 |
|---|---|---|---|
| 构建域 | CI/CD 管道、构建节点、Dockerfile 仓库 | 高 | 仅允许签名的基础镜像、强制 SBOM 生成、构建日志加密存储 |
| 仓库域 | 镜像仓库、签名服务、漏洞扫描器 | 高 | 镜像推送必须携带数字签名、拉取前验证签名、仓库访问基于 OIDC 令牌 |
| 部署域 | Kubernetes 集群、容器运行时、策略代理 | 中 | 运行时镜像必须通过策略校验、禁止特权容器、强制只读根文件系统 |
| 开发域 | 开发者工作站、本地镜像构建环境 | 低 | 仅允许拉取已签名的公共镜像、本地构建必须上传 SBOM、禁止直接推送生产仓库 |
信任边界不是静态的。当镜像从构建域流转到仓库域时,其信任等级可能因扫描结果、签名状态、来源标签而动态调整。零信任模型要求信任边界随工件生命周期实时变化。
3.3 策略执行点(PEP)与策略决策点(PDP)
零信任架构的核心控制平面由两个关键组件构成:策略决策点(Policy Decision Point, PDP) 和 策略执行点(Policy Enforcement Point, PEP)。PDP 负责根据身份、上下文、工件元数据做出授权决策;PEP 负责在数据平面拦截请求并强制执行 PDP 的决策。
3.3.1 策略决策点(PDP)
PDP 是零信任架构的“大脑”,它不直接处理数据流量,而是接收来自 PEP 的决策请求,结合策略引擎、身份提供商(IdP)、工件元数据(签名、SBOM、漏洞评分)等信息,返回 Permit(允许)、Deny(拒绝)或 Evaluate(需要额外评估)的决策结果。
镜像供应链中 PDP 的典型决策流程:
- 接收请求: PEP 将请求上下文(请求者身份、目标镜像、操作类型、环境标签)封装为 XACML 或自定义格式发送至 PDP。
- 身份验证: PDP 调用 IdP(如 OIDC/OAuth2 提供商)验证请求者身份是否有效、令牌是否过期。
- 上下文评估: 检查请求来源 IP、设备指纹、时间窗口、历史行为风险评分。
- 工件验证: 查询镜像签名状态、SBOM 完整性、漏洞扫描结果(CVSS 评分阈值)。
- 策略匹配: 将上述信息与预定义策略集(如 Rego/OPA 策略、Kyverno 策略)进行匹配。
- 返回决策: 返回 Permit(允许)、Deny(拒绝并记录原因)或 Evaluate(触发人工审批或 MFA)。
3.3.2 策略执行点(PEP)
PEP 是零信任架构的“手脚”,部署在数据路径的关键节点上,负责拦截请求、转发至 PDP 获取决策、并根据决策结果执行允许或阻断操作。PEP 本身不存储策略,也不做授权判断,仅做策略的强制实施。
镜像供应链中 PEP 的典型部署位置:
| 部署位置 | PEP 实现示例 | 拦截的请求类型 | 执行动作 |
|---|---|---|---|
| 镜像仓库入口 | 仓库反向代理 / 仓库插件(如 Harbor 拦截器) | 镜像推送、镜像拉取、标签修改 | 允许通过 / 返回 403 / 触发审计告警 |
| CI/CD 管道 | 管道插件(如 Jenkins OPA 插件、GitLab CI 策略阶段) | 构建触发、镜像推送、配置变更 | 允许继续 / 中止管道 / 标记为失败 |
| Kubernetes 准入控制器 | Kyverno、OPA Gatekeeper、KubeArmor | Pod 创建、镜像拉取、特权容器申请 | 允许创建 / 拒绝创建 / 变更配置后允许 |
| 容器运行时 | Falco、Tracee、KubeArmor 运行时策略 | 进程执行、文件访问、网络连接 | 允许执行 / 杀死进程 / 生成告警事件 |
3.4 PEP 与 PDP 的协同工作模式
在镜像供应链中,PEP 和 PDP 的协同不是一次性的请求-响应循环,而是贯穿工件生命周期的持续验证过程。以下是一个典型的端到端协同场景:
1. 开发者执行
docker push,请求到达仓库入口 PEP。2. PEP 提取请求者 OIDC 令牌、镜像名称、标签、摘要,发送至 PDP。
3. PDP 验证令牌有效性,查询策略:仅允许来自已签名构建管道的镜像推送至生产仓库。
4. PDP 检查镜像签名状态:若镜像未签名或签名无效,返回 Deny。
5. PDP 检查镜像漏洞扫描结果:若存在 Critical 级别漏洞且无豁免,返回 Deny。
6. PDP 返回 Permit,PEP 允许推送完成,并记录审计日志。
7. 若推送成功,PDP 更新镜像元数据状态,触发后续策略评估(如部署准入)。
3.5 信任边界模型的实施要点
- 策略即代码(Policy as Code): 所有信任边界策略应使用声明式语言(Rego、Kyverno YAML)编写,纳入版本控制,通过 CI/CD 管道自动测试和部署。
- 决策缓存与失效: PDP 应缓存决策结果以减少延迟,但缓存 TTL 必须根据策略变更频率和风险等级动态调整。高风险操作(如生产环境镜像推送)建议禁用缓存。
- 审计与可观测性: 所有 PEP 拦截事件和 PDP 决策结果必须输出到统一的审计日志系统,支持结构化查询和告警。推荐使用 OpenTelemetry 标准进行链路追踪。
- 降级与熔断: 当 PDP 不可用时,PEP 应支持降级模式(如拒绝所有请求的“安全降级”或基于本地缓存的“宽松降级”),避免单点故障导致整个供应链阻塞。