文章总结: 文章介绍了如何使用CycloneDX工具为Java、JavaScript和Python项目生成SBOM文件,强调了SBOM在软件供应链安全中的重要性,并提供了具体的操作步骤和命令,帮助开发者快速生成包含软件组件、版本、依赖关系和许可证等信息的SBOM文件。 综合评分: 85 文章分类: 供应链安全,安全工具,应用安全,解决方案,数据安全
使用主流开发语言的项目如何一键生成SBOM文件?
原创
筑梦网安
全栈安全
2025年10月8日 11:40 浙江
1. 引言
在供应链中,物料清单 (BOM) 定义并描述了交付物制造和包装过程中所用材料的内容。在软件供应链中,BOM 指的是与软件捆绑在一起的所有组件的内容,包括作者、发布者、名称、版本、许可证和版权。Dependency Track 支持 CycloneDX 格式。特定于软件组件的物料清单通常称为 SBOM (Software Bill of Materials)。
SBOM是一份包含软件组件、版本、依赖关系和许可证等信息的正式记录。它回答了三个关键问题:
- 这个软件由什么组成?
- 这些组件来自哪里?
- 它们是否存在已知的安全漏洞?
随着软件供应链攻击日益频繁,拥有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:
<command>
environment (env, venv)
Build an SBOM from Python (virtual) environment
requirements Build an SBOM from Pip requirements
pipenv Build an SBOM from Pipenv manifest
poetry Build an SBOM from Poetry project
options:
-h, --help show this help message and exit
--version 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文件?》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论