云原生平台迁移时如何用 SLSA 级别整理构建证明材料
云原生平台迁移时,最容易漏掉的不是构建脚本,而是“这个制品到底由什么输入、什么平台、什么过程生成”的证明链。整理 SLSA 级别时,不要把一份 JSON 文件直接当成等级证明,而要把制品摘要、构建输入、平台身份、证明分发和下游验证一起放进验收表。官方规范入口:https://slsa.dev/spec/v1.2/build-requirements。
迁移验收可以先以 SLSA Build L1 建立可追溯证明,再根据制品风险逐步补齐 L2 的托管平台与真实性、L3 的抗伪造和构建隔离;级别是平台与验证能力的组合,不是文档名称。
适合阅读:负责 CI/CD、制品仓库、云原生平台迁移或发布门禁的工程师。本文只讨论证明材料和验收边界,不讨论绕过安全控制的方法。
先记住三件事:证明要绑定输出摘要;输入和构建平台要能被识别;证明生成、分发与验证必须能在发布链路中落档。
迁移验收先看哪一层
SLSA v1.2 把 Build Track 分成多个级别。L1 的核心是证明存在,要求构建过程生成能唯一识别输出制品的 provenance,并描述制品如何产生;它适合先解决“来源不清”和“发布拿错制品”的问题。L2 在此基础上要求托管构建平台生成并让下游验证证明的真实性,验收重点从“有没有文件”变为“文件能不能相信”。L3 再要求证明难以被租户伪造,并强化构建之间的隔离、临时环境和密钥边界。

迁移表可以这样写:L1 由发布团队确认证明字段齐全并随制品分发;L2 由平台团队证明构建运行在托管平台、证明具备可验证真实性;L3 还要由平台团队说明用户构建步骤不能取得签名材料、不能影响并行或后续构建。这样写的好处是责任边界清楚,避免让应用团队单独“补文档”去承担平台能力。
把证明材料接到发布门禁
迁移前先为每类制品建立一份最小证据卡。源代码修订记录实际采用的提交或版本;externalParameters 记录构建入口暴露给平台的外部输入;resolvedDependencies 记录能识别的依赖;buildDefinition 表示构建过程的定义;runDetails 记录构建平台和运行信息;subject 则绑定输出制品及其摘要。它们不是越多越好,而是要能回答“谁、用什么、从哪些输入、生成了哪个输出”。

发布门禁至少保留三类动作:第一,检查证明中的输出摘要是否等于待发布制品;第二,按组织预先定义的构建预期检查来源、构建类型和关键输入;第三,验证证明真实性,并把失败原因与制品版本关联。验证不通过时应阻断发布或转人工审批,不能只把失败日志丢在构建平台里。
平台迁移时的三种选型方式
先达成 L1:适合低风险内部工具或迁移初期。重点是统一构建入口、固定制品命名与摘要、生成 provenance 并把它和制品一起分发。它能减少误发布,但不等于能抵抗伪造。
直接选择 L2 能力的平台:适合对外发布的容器、SDK 和供应链依赖。除了证明字段,还要确认托管平台的身份、签名方式、验证入口和密钥保管责任。验收时要问清楚“谁生成证明、谁持有密钥、下游如何验签”,而不是只看平台宣传中的合规标签。
为高风险制品规划 L3:适合承载生产发布或高价值依赖的构建平台。重点转向不可伪造和隔离:用户定义的构建步骤不能访问证明签名材料,重叠构建不能互相影响,后续构建不能继承前一次的非预期状态,缓存也不能让一个构建污染另一个构建。若平台暂时做不到,应把 L3 缺口写成迁移后的平台改造项,不要把 L2 的签名材料包装成 L3。
迁移验收清单与边界
| 验收维度 | 需要留下的材料 | 主要责任方 |
|---|---|---|
| 输出绑定 | 制品名称、摘要、发布版本与 provenance 的 subject | 发布团队 |
| 过程与输入 | 构建定义、外部参数、已解析依赖、调用标识 | 构建平台与项目团队 |
| 真实性 | 平台身份、签名验证结果、信任根说明 | 平台团队 |
| 隔离能力 | 临时环境、并行构建、缓存与密钥访问边界 | 平台团队 |
这里有一个常见边界:SLSA Build 级别描述的是构建证明的可信度和平台隔离能力,不会替你判断代码本身是否安全,也不会自动保证依赖没有漏洞。迁移项目应把漏洞扫描、许可证检查、发布审批等控制作为相邻门禁单独记录。
常见问题
只有 provenance 文件就能写成 SLSA L2 吗?
不能。L2 还需要托管构建平台生成的真实性证明,并让下游能够验证;文件存在只是 L1 的起点。
迁移时必须一次做到 L3 吗?
不必。可以按制品风险先落地 L1 或 L2,但要在清单中写明当前等级、缺口、责任方和升级条件,避免把阶段性结果误标成最终能力。
小结:用 SLSA 级别整理迁移材料,关键是把“等级”翻译成可核对的证据:L1 看证明存在,L2 看托管平台与真实性,L3 看抗伪造、隔离和密钥边界。只要每个输出制品都能沿着输入、构建平台、证明分发和下游验证回溯,迁移验收就有了可执行的落点。
Go context用取消原因区分失败来源的排查方法
- 上一篇
- Go context用取消原因区分失败来源的排查方法
- 下一篇
- Go crypto/x509区分 PEM 解码失败与证书解析失败的错误定位
-
- 科技周边 · 业界新闻 | 2小时前 |
- OpenTelemetry Collector 管道拆分如何降低多信号配置耦合
- 398浏览 收藏
-
- 科技周边 · 业界新闻 | 4天前 |
- CNCF 项目进入毕业阶段后如何建立版本兼容与维护窗口清单
- 108浏览 收藏
-
- 科技周边 · 业界新闻 | 4天前 | kubernetes · OCI镜像供应链核对 OCI镜像摘要 容器镜像来源追踪 Kubernetes部署镜像一致性 image manifest digest
- OCI 镜像供应链如何核对来源、摘要和部署对象的一致性
- 244浏览 收藏
-
- 科技周边 · 业界新闻 | 4天前 | 云原生 · 回滚 · kubernetes ·
- Kubernetes 生产化治理如何把策略、发布和回滚证据串起来
- 274浏览 收藏
-
- 科技周边 · 业界新闻 | 4天前 | 可观测性 · OpenTelemetry Collector 可观测性治理
- CNCF OpenTelemetry 治理成熟后如何划分 Collector 配置与业务埋点责任
- 217浏览 收藏
-
- 科技周边 · 业界新闻 | 4天前 | 云原生 ·
- CNCF 项目毕业状态之外还要看哪些生产信号
- 298浏览 收藏
-
- 科技周边 · 业界新闻 | 4天前 |
- GPU 集群观测从 CPU 指标扩展时要增加哪些维度
- 110浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 121次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 196次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 139次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 114次使用
-
- CMMLU
- 深入了解CMMLU中文评估基准,涵盖67个学科主题,提供数据集下载、Zero-shot/Five-shot评估方法及排行榜,助力优化中文语言模型性能。
- 96次使用
-
- Go chassis云原生微服务开发框架应用编程实战
- 2022-12-29 214浏览
-
- Go 项目用 GitHub Actions 自托管 runner:版本强制执行前该怎么整理 CI
- 2026-07-09 340浏览
-
- docker的 linux 内核可以和宿主机不一样吗?
- 2023-01-12 318浏览
-
- Go 服务上 Kubernetes 后 HPA 为什么不扩容:requests、CPU 和并发指标怎么选
- 2026-07-17 111浏览
-
- 零基础入门PolarDB-X:搭建高可用系统并联动数据大屏
- 2023-02-24 274浏览
