当前位置: 首页 > news >正文

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

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生成插件

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

开发语言项目名称代码仓库地址包管理器
Javahutoolhttps://github.com/chinabugotech/hutool.gitMaven
JavaScriptSemantic-UIhttps://github.com/Semantic-Org/Semantic-UI.gitnpm
Pythontransformershttps://github.com/huggingface/transformers.gitpip

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

在CycloneDX工具箱中找到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 --helpusage: 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) environmentrequirements        Build an SBOM from Pip requirementspipenv              Build an SBOM from Pipenv manifestpoetry              Build an SBOM from Poetry projectoptions:-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、区块链等新兴领域

适合人群

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

在这里你能获得

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

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

http://www.dtcms.com/a/464993.html

相关文章:

  • Java常见业务场景之大量数据存储优化:从 Mysql 到 Redis Bitmap ,实现高效存储用户签到记录
  • 朝阳企业网站建设方案费用东莞公司注册
  • 光影魔术手_4.7.2.1192|win中文|图像修改编辑器|安装教程
  • c++ bug 记录(merge函数调用时错误地传入了vector对象而非迭代器。)
  • 珠海网站专业制作wordpress 折线图
  • css、dom 性能优化方向
  • 【大前端】Android Deep Link 技术详解与实践指南
  • Linux操作系统如何使用ISO镜像文件来搭建本地镜像源?
  • UMI 中使用qiankun问题记录
  • 演示和解读ChatGPT App SDK,以后Android/iOS App不用开发了?
  • Spring Boot 与 WebSocket:长连接掉线、心跳与消息广播的问题
  • 数琨创享:新能源行业标杆企业QMS质量管理平台案例
  • 如何用easyui做网站网站设计说明书5000字
  • 从MySQL到ClickHouse超大规模数据分析的架构迁移实践与性能对比
  • 架构图在什么网站可以做wordpress-saas
  • echarts不根据传入参数,自定义 legend 的内容(视觉映射)
  • H3C IRF
  • 【C++】继承深度解析:继承方式和菱形虚拟继承的详解
  • 徐州 网站 备案 哪个公司做的好phpcms 中英文网站
  • WebSocket | 一点简单了解
  • 算法题基础 : Java : BufferedReader、BufferedWriter 和 StringTokenizer 详解
  • 企业微信 自建应用审批流程引擎功能开发【报错分析】
  • Slf4j 接口文档左侧菜单有显示,但是点击后空白
  • 【AES加密专题】4.Sbox的解析和生成
  • 考完HCIE数通,能转云计算 / 安全 / AI方向吗?
  • 重庆企业网站建设推荐怎么申请域名和备案
  • 松江 网站建设公司拼多多推广联盟
  • 中国极端气象干旱事件(1951-2022)
  • 一文详解Go 语言内存逃逸(Escape Analysis)
  • 学习threejs,实现粒子化交互文字