<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>sbom on </title>
    <link>/tags/sbom/</link>
    <description>Recent content in sbom on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Sun, 26 Apr 2026 00:30:00 +0800</lastBuildDate><atom:link href="/tags/sbom/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>软件供应链最小基线：SBOM &#43; cosign 镜像签名</title>
      <link>/posts/software-supply-chain-sbom-cosign-2026/</link>
      <pubDate>Sun, 26 Apr 2026 00:30:00 +0800</pubDate>
      
      <guid>/posts/software-supply-chain-sbom-cosign-2026/</guid>
      <description>📦 本文基于的完整项目源码：meirongdev/shop
Log4Shell 让全行业意识到：没人能回答&amp;quot;我用了哪些库的哪些版本&amp;quot; 的时候，所谓应急响应就是几千个工程师在同时翻自己的 pom.xml。SLSA、cosign、Sigstore 这套工具链，更多是在试着把这个问题收敛成一次可查询的清单比对。本文聚焦最小基线：每个产物有 SBOM、每个镜像有签名、SBOM 作为 attestation 绑定到镜像。
一、为什么 SBOM 是底线 Q：SBOM 到底是什么，跟以前我们说的&amp;quot;依赖列表&amp;quot;有什么本质区别？
SBOM（Software Bill of Materials）是一份机器可读的、可校验的依赖清单，每条记录包含：
名称、版本、purl（package URL，唯一定位坐标） 哈希（SHA-256，验证产物未被篡改） 许可证 直接 / 间接依赖关系（树状结构） 可选：CVE / VEX 状态 mvn dependency:tree 生成的是给人看的文本；SBOM 是给工具看的、跨语言统一的 JSON 文档。Log4Shell 当时如果每个交付物都已经有 SBOM 在手，问题从&amp;quot;全员盲查&amp;quot;变成 jq &#39;.components[] | select(.purl | contains(&amp;quot;log4j-core&amp;quot;) and contains(&amp;quot;@2.&amp;quot;))&#39;。
Q：CycloneDX 和 SPDX 选哪个？
两个都是 ISO 认可的 SBOM 标准，95% 场景下结果等价。差异在重点：
CycloneDX — OWASP 出品，安全工程师视角，原生支持 VEX（漏洞利用状态）、SaaSBOM、ML-BOM。漏洞工具链（Dependency-Track、Trivy、Grype）的 first-class 输入格式。 SPDX — Linux Foundation 出品，许可证合规视角，法务工具（FOSSA、Black Duck）原生消费。 Java 生态里我会先选 CycloneDX——cyclonedx-maven-plugin 上手成本比较低。如果你的合规需求是法务驱动而非安全驱动，再考虑 SPDX。</description>
    </item>
    
  </channel>
</rss>
