使用主流开发语言的项目如何一键生成SBOM文件?

admin 2025-12-22 03:51:16 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章介绍了如何使用CycloneDX工具为Java、JavaScript和Python项目生成SBOM文件,强调了SBOM在软件供应链安全中的重要性,并提供了具体的操作步骤和命令,帮助开发者快速生成包含软件组件、版本、依赖关系和许可证等信息的SBOM文件。 综合评分: 85 文章分类: 供应链安全,安全工具,应用安全,解决方案,数据安全


cover_image

使用主流开发语言的项目如何一键生成SBOM文件?

原创

筑梦网安

全栈安全

2025年10月8日 11:40 浙江

1. 引言

在供应链中,物料清单 (BOM) 定义并描述了交付物制造和包装过程中所用材料的内容。在软件供应链中,BOM 指的是与软件捆绑在一起的所有组件的内容,包括作者、发布者、名称、版本、许可证和版权。Dependency Track 支持 CycloneDX 格式。特定于软件组件的物料清单通常称为 SBOM (Software Bill of Materials)。

SBOM是一份包含软件组件、版本、依赖关系和许可证等信息的正式记录。它回答了三个关键问题:

  1. 这个软件由什么组成?
  2. 这些组件来自哪里?
  3. 它们是否存在已知的安全漏洞?

随着软件供应链攻击日益频繁,拥有SBOM已经从“锦上添花”变成了“必不可少”。幸运的是,CycloneDX 和 Dependency Track 的组合将完美解决以上三个关键问题。

CycloneDX + Dependency Track:SBOM成分展示效果预览:

:CycloneDX 和 Dependency Track 都是支持软件、硬件和服务的全栈解决方案。

若你希望了解关于CycloneDX的更详细介绍,可以参阅往期博文CycloneDX:全栈软件供应链安全标准解读及优势分析。

2. 各语言开发的项目如何自动生成SBOM?

常见的开发语言,包括Java、JavaScript、Python、Go、Rust、PHP等都支持生成CycloneDX格式的SBOM文件。

CycloneDX官方提供了多种语言生成SBOM的插件,获取地址:https://cyclonedx.org/tool-center/

CycloneDX工具箱中的各语言SBOM生成插件

拉下来我们挑选几个代表性的语言项目来详细介绍整个生成过程。

| 开发语言 | 项目名称 | 代码仓库地址 | 包管理器 | | — | — | — | — | | Java | hutool | https://github.com/chinabugotech/hutool.git | Maven | | JavaScript | Semantic-UI | https://github.com/Semantic-Org/Semantic-UI.git | npm | | Python | transformers | https://github.com/huggingface/transformers.git | pip |

2.1. 后端开发语言: 使用CycloneDX生成Java SBOM

在CycloneDX工具箱中找到CycloneDX for Maven插件,点击进入到插件的官网地址。

CycloneDX for Maven插件

在插件的官网上可以看到用法说明,CycloneDX Maven 插件可生成 CycloneDX 软件物料清单 (SBOM),其中包含项目所有直接和传递依赖项的集合。

插件官网使用介绍

CycloneDX Maven 插件包含以下三个目标:

  • makeBom :为每个 Maven 模块及其依赖项创建一个 BOM,
  • makeAggregateBom :在构建根目录创建一个聚合 BOM(包含来自整个多模块构建的依赖项),并最终为每个模块创建一个 BOM。
  • makePackageBom :为每个带有 war 或 ear 包装的 Maven 模块创建一个 BOM。

根据指导,将插件配置复制到Java项目的POM文件中,目标选择 makeAggregateBom,按照下图中的步骤便可自动生成两种格式(xml和json)的SBOM文件。

Java项目SBOM快速生成

或者直接在终端上执行命令,可同样生成SBOM文件。

mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom

后续涉及到POM文件变更,只需重复以上步骤或命令即可。

2.2. 前端开发语言: 使用CycloneDX生成JavaScript SBOM

在CycloneDX工具箱中找到CycloneDX for NPM插件,点击进入到插件的官网地址,可以看到插件使用说明。

CycloneDX for NPM

具体生成步骤如下:

1、安装插件

npm install --save-dev @cyclonedx/cyclonedx-npm

2、生成SBOM文件

npx @cyclonedx/cyclonedx-npm >bom.json

JavaScript SBOM

2.3. 脚本开发语言: 使用CycloneDX生成Python SBOM

找到名称为CycloneDX for Python的插件,进入插件官网可以看到使用说明,具体操作如下:

1、首先执行命令安装插件,安装命令从以下选择其一就行

python -m pip install cyclonedx-bom   # install via pip
pipx install cyclonedx-bom            # install via pipx
poetry add cyclonedx-bom              # install via poetry
uv tool install cyclonedx-bom         # install via uv

2、执行如下命令生成SBOM文件

python3 -m cyclonedx_py --help

usage: cyclonedx-py [-h] [--version] <command> ...

Creates CycloneDX Software Bill of Materials (SBOM) from Python projects and environments.

positional arguments:
&nbsp; <command>
&nbsp; &nbsp; environment (env, venv)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Build an SBOM from Python (virtual) environment
&nbsp; &nbsp; requirements &nbsp; &nbsp; &nbsp; &nbsp;Build an SBOM from Pip requirements
&nbsp; &nbsp; pipenv &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Build an SBOM from Pipenv manifest
&nbsp; &nbsp; poetry &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Build an SBOM from Poetry project

options:
&nbsp; -h, --help&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; show this&nbsp;help&nbsp;message and&nbsp;exit
&nbsp; --version &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; show program's version number and exit

如果项目根目录下存在requirements.txt文件,推荐使用命令python3 -m cyclonedx_py requirements >bom.json,生成的bom.json文件位于项目根目录下。

项目根目录中存在requirements

如果项目根目录下不存在requirements.txt文件,推荐使用命令

# 1、安装所有依赖
pip3 install .
# 2、生成SBOM,文件名为bom.json
python3 -m cyclonedx_py requirements >bom.json

项目根目录中不存在requirements

推荐阅读

  • 软件物料清单SBOM详解
  • 软件物料清单SBOM都没有,何谈软件供应链安全?
  • CycloneDX:全栈软件供应链安全国际标准解读及优势分析
  • SBOM主流格式SPDX介绍

关注我,带你看懂技术本质!用最接地气的”人话”拆解硬核知识,让复杂概念变得简单易懂 🔥

添加好友后邀请进技术交流群

每周更新

  • 💡 技术原理图解:一图胜千言,直观呈现技术架构
  • 🛠️ 实战案例解析:结合真实项目经验,分享避坑指南
  • 🤖 前沿技术追踪:第一时间解读AI、区块链等新兴领域

适合人群

  • ✅ 技术小白想系统入门
  • ✅ 开发者想提升技术深度
  • ✅ 产品经理需要技术洞察
  • ✅ 所有对科技充满好奇的人

在这里你能获得

  • ✨ 复杂技术简单化
  • ✨ 抽象概念具象化
  • ✨ 理论知识实用化
  • ✨ 学习路径清晰化

点击关注,开启你的技术认知升级之旅! 🚀


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式详见页面底部说明板块。

本文转载自:全栈安全 筑梦网安《使用主流开发语言的项目如何一键生成SBOM文件?》

评论:0   参与:  1