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 的最短路径。
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 的双重角色,是实现该标准的最佳载体。
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 准入规则。