3. 软件供应链安全标准与框架:SLSA框架、NIST SP 800-204、CNCF安全最佳实践

在镜像供应链安全领域,单一工具或策略无法覆盖从代码提交到生产部署的全链路风险。业界已形成三个层次的标准与框架:SLSA(Supply-chain Levels for Software Artifacts) 提供可量化的供应链安全成熟度模型;NIST SP 800-204 系列聚焦微服务与容器化应用的零信任架构;CNCF 安全最佳实践 则从云原生社区角度给出可落地的操作指南。三者共同构成了镜像供应链安全环境晋级通道的“合规基准”。

核心观点: Kyverno 策略引擎是实现上述标准中“策略即代码”与“持续合规验证”的关键执行层。理解标准框架,才能设计出符合晋级通道要求的 Kyverno 策略。

3.1 SLSA 框架:供应链安全成熟度模型

SLSA(发音为“salsa”)由 Google 发起,现已成为 OpenSSF 旗下的行业标准。它将软件供应链安全分为四个等级(L1–L4),等级越高,对构建过程、源材料完整性、依赖关系可追溯性的要求越严格。

SLSA 等级 核心要求 对镜像供应链的映射 Kyverno 可验证点
L1 构建过程可脚本化、可重现 Dockerfile 与构建脚本版本化管理 验证镜像是否来自受信构建流水线
L2 构建源与依赖项来源可追溯 基础镜像 digest 锁定、依赖 SBOM 生成 校验镜像 SBOM 附件、禁止 latest 标签
L3 构建平台隔离 + 防篡改 镜像签名(Cosign)、构建日志不可篡改 验证镜像签名、拒绝未签名镜像
L4 全链路可审计 + 依赖完整性 不可变镜像仓库、策略即代码强制执行 准入控制强制 SLSA L4 策略集
实践建议: 在晋级通道中,建议将 SLSA L3 作为“生产准入基线”,L4 作为“关键业务晋级目标”。Kyverno 的 verifyImages 规则可直接对接 Cosign 签名验证,是实现 L3 的最短路径。
SLSA 等级与镜像供应链安全映射 SLSA L1 SLSA L2 SLSA L3 SLSA L4 可脚本化构建 Dockerfile 版本管理 依赖追溯 + SBOM digest 锁定 镜像签名 (Cosign) 构建平台隔离 全链路可审计 策略即代码强制执行 验证受信流水线 准入控制 校验 SBOM 附件 禁止 latest 标签 verifyImages 签名 拒绝未签名镜像 全策略集强制执行 不可变仓库策略 晋级通道基线:L3 为生产准入,L4 为关键业务目标

3.2 NIST SP 800-204 系列:微服务零信任架构

NIST SP 800-204(含 204A/B/C/D)是美国国家标准与技术研究院发布的微服务安全系列指南,核心思想是将零信任原则(显式验证、最小权限、假设受损)嵌入容器化应用的整个生命周期。该系列对镜像供应链安全提出了明确的架构要求。

  • SP 800-204:微服务安全架构基础,强调服务间双向 mTLS、策略执行点(PEP)与策略决策点(PDP)分离。
  • SP 800-204A:构建安全微服务,要求镜像构建时集成安全扫描、签名与 SBOM 生成。
  • SP 800-204B:微服务授权框架,推荐使用 OPA/Kyverno 作为 PDP,实现细粒度访问控制。
  • SP 800-204C:持续合规与监控,要求运行时镜像完整性校验与策略审计。
  • SP 800-204D:DevSecOps 集成,将安全策略嵌入 CI/CD 流水线。
注意: NIST SP 800-204 系列明确将“策略引擎”作为零信任架构的核心组件。Kyverno 在 Kubernetes 环境中天然承担了 PDP + PEP 的双重角色,是实现该标准的最佳载体。
NIST SP 800-204 系列与 Kyverno 角色映射 SP 800-204 (基础) SP 800-204A (构建) SP 800-204B (授权) SP 800-204C (合规) SP 800-204D (DevSecOps) mTLS + PEP/PDP 分离 镜像签名 + SBOM 细粒度访问控制 运行时完整性校验 CI/CD 策略集成 Kyverno 作为 PDP verifyImages 规则 RBAC + 策略绑定 准入控制 + 审计 CI/CD 策略即代码 Kyverno 在 Kubernetes 环境中同时承担 PDP(策略决策点)与 PEP(策略执行点)角色

3.3 CNCF 安全最佳实践

CNCF(Cloud Native Computing Foundation)通过其安全 TAG(Technical Advisory Group)发布了一系列针对云原生环境的安全最佳实践,涵盖容器镜像、Kubernetes 配置、策略引擎、运行时安全等领域。以下是镜像供应链安全相关的核心实践:

实践领域 最佳实践 Kyverno 策略示例
镜像构建 使用最小基础镜像、锁定 digest、多阶段构建 验证基础镜像来自受信仓库列表
镜像签名 所有生产镜像必须使用 Cosign 签名 verifyImages { authorities: [keyless|key] }
SBOM 管理 生成并附加 SPDX/CycloneDX SBOM 校验镜像注解中是否包含 SBOM 引用
漏洞扫描 镜像入库前必须通过漏洞扫描(CVSS ≥ 7 阻断) 结合外部扫描结果,拒绝高风险镜像
运行时策略 禁止特权容器、只读根文件系统、非 root 用户 validate { podSecurity: restricted }
策略即代码 所有安全策略应版本化管理、自动化测试 Kyverno Policy 作为 GitOps 工件
晋级通道对齐: CNCF 最佳实践与 SLSA L3/L4 要求高度重叠。在课程后续章节中,我们将把这些实践转化为具体的 Kyverno ClusterPolicy 与 PolicySet,并嵌入晋级通道的“资源变更”流程。

3.4 三框架融合:镜像供应链安全策略矩阵

将 SLSA、NIST SP 800-204、CNCF 最佳实践三者融合,可以得到一个面向镜像供应链安全的“策略矩阵”,作为 Kyverno 策略设计的顶层输入:

安全维度 SLSA 映射 NIST 800-204 映射 CNCF 实践映射 Kyverno 策略类型
构建完整性 L2–L3 204A 镜像签名 + SBOM verifyImages, validate
依赖可追溯 L2–L4 204A, 204C SBOM 管理 validate (annotation check)
最小权限 L3 204B Pod 安全标准 validate (podSecurity)
持续合规 L3–L4 204C, 204D 策略即代码 PolicySet, 审计模式
运行时保护 L4 204B, 204C 运行时策略 mutate + validate
关键提醒: 上述三个框架并非互斥,而是互补关系。SLSA 提供“做什么”的等级目标,NIST 800-204 提供“架构上如何做”的指导,CNCF 最佳实践提供“具体怎么做”的操作清单。Kyverno 策略引擎是三者落地的“执行层”,将标准转化为可强制执行的 Kubernetes 准入规则。