1. SBOM介绍
SBOM是一种正式标准化的、机器可读的元数据,它唯一地标识软件组件及其内容;也可能包括版权和许可证等成分数据。SBOM旨在跨组织共享,有助于提供软件供应链成分清单与透明度,并且未来趋势将作为软件交付件必要清单。
2. SBOM最小集定义
美国国家电信和信息管理局(National Telecommunications and Information Administration)发布SBOM最小集的定义: 数据字段是关于必须捕获和维护每个组件的基础数据,以便在整个软件供应链中跟踪组件,并基于此扩展License和漏洞库等其他数据字段。
数据字段 | 描述 |
---|---|
供应商名称 | 创建、定义和标识组件的实体的名称。 |
组件名称 | 分配给原始供应商定义的软件单元的名称。 |
组件的版本 | 组件版本号、供应商用来指定软件从先前标识的版本发生变化的标识符。 |
其它唯一标识符 | 用于标识组件或用作相关数据库的查找键的其他标识符。 |
依赖关系 | 软件依赖关系、表征上游组件 X 包含在软件 Y 中的关系 |
SBOM数据的作者 | 为此组件创建SBOM数据的实体的名称。 |
时间戳 | 记录SBOM数据组装的日期和时间。 |
推荐的数据 | |
组件的哈希 | 组件的唯一哈希,以帮助允许列表或拒绝列表。 |
生命周期阶段 | SDLC 中捕获 SBOM 数据的获取的阶段。 |
3. openEuler发布的SBOM字段说明
最小集数据字段 | SPDX |
---|---|
组件供应商名称 | document->packages->supplier |
组件名称 | document->packages->name |
组件版本 | document->packages->versionInfo(openEuler使用了epoch:version-release格式) |
组件其他唯一标识 | document->packages->externalRefs(category:PACKAGE_MANAGER)->purl |
组件依赖关系 | document->packages->externalRefs(category:EXTERNAL_MANAGER)->purl |
SBOM数据作者 | document->creationInfo->creators |
SBOM时间戳 | document->creationInfo->created |
组件的哈希 | document->packages->checksums |
生命周期阶段 | 未支持 |
其他组件关系 | 内部子组件:document->packages->externalRefs(category:PROVIDE_MANAGER)->purl 运行时依赖:document->relationships(relationshipType:DEPENDS_ON) |
组件License信息 | document->packages->licenseDeclared document->packages->licenseConcluded |
组件Copyright信息 | document->packages->copyrightText |
组件上游社区信息 | document->packages->externalRefs(category:SOURCE_MANAGER)->url |
组件补丁信息 | 补丁文件:document->files(fileTypes:SOURCE) 补丁关系:document->relationships(relationshipType:PATCH_APPLIED) |
组件来源 | document->packages->downloadLocation |
组件信息 | document->packages->description document->packages->summary |
组件官网/博客 | document->packages->homepage |
4. SBOM文件示例
解析最小颗粒度是RPM包
文档捉虫