本文档正在积极开发中,尚未最终定稿。
Skip to content

2.2 格式规范

CycloneDX JSON

我们使用 CycloneDX 作为主要的 SBOM 格式。CycloneDX 是一项 OWASP 标准,满足 CRA 对"常用的、机器可读的格式"的要求 (Art. 13(23))。

为什么选择 CycloneDX

标准CycloneDXSPDX
主要关注点安全与合规许可证与知识产权
漏洞追踪原生支持 (VEX)通过扩展
工具支持Trivy, Syft, GrypeTrivy, Syft
OWASP 标准否(Linux 基金会)
CRA 合规
复杂度较低较高

结构

CycloneDX SBOM 包含以下主要元素:

json
{
  "bomFormat": "CycloneDX",
  "specVersion": "1.5",
  "serialNumber": "urn:uuid:<unique-id>",
  "version": 1,
  "metadata": {
    "timestamp": "2026-02-08T12:00:00Z",
    "tools": {
      "components": [
        {
          "type": "application",
          "name": "trivy",
          "version": "0.58.0"
        }
      ]
    },
    "component": {
      "type": "application",
      "name": "product-name",
      "version": "1.2.3",
      "supplier": {
        "name": "BAUER GROUP"
      }
    }
  },
  "components": [
    {
      "type": "library",
      "name": "example-package",
      "version": "4.1.0",
      "purl": "pkg:npm/example-package@4.1.0",
      "licenses": [
        {
          "license": {
            "id": "MIT"
          }
        }
      ],
      "hashes": [
        {
          "alg": "SHA-256",
          "content": "abc123..."
        }
      ]
    }
  ],
  "dependencies": [
    {
      "ref": "product-name",
      "dependsOn": ["example-package"]
    }
  ]
}

必填字段

字段CRA 相关性描述
bomFormat格式标识必须为 CycloneDX
specVersion标准符合性至少为 1.5
serialNumber唯一性每个 SBOM 实例的 UUID
metadata.timestamp可追溯性生成时间戳
metadata.component产品标识产品名称和版本
metadata.component.supplier制造商标识BAUER GROUP
components[].name组件标识软件包/库名称
components[].version版本追踪精确版本
components[].purl唯一引用软件包 URL(推荐)

文件命名约定

sbom-<product>-<version>.cdx.json

示例:
sbom-api-gateway-v2.1.0.cdx.json
sbom-firmware-esp32-v1.3.2.cdx.json
sbom-web-frontend-v4.0.1.cdx.json

SBOM 版本控制

产品的每个新版本都有其独立的 SBOM。当针对同一产品版本重新生成 SBOM 时(例如,修正 SBOM 本身时),SBOM 版本(version 字段)会递增。

SPDX(次要格式)

SPDX 作为次要格式受到支持,主要用于业务合作伙伴或监管机构明确要求 SPDX 的场景。

bash
# SPDX 生成
trivy image --format spdx-json --output sbom.spdx.json <image>:<tag>

文档基于 CC BY-NC 4.0 许可 · 代码基于 MIT 许可