sbom-tool

陆伍
2小时前发布 /正在检测是否收录...
广告 广告 广告 广告 广告 广告 广告 广告 广告 广告

项目介绍

SBOM-TOOL 是通过源码仓库、代码指纹、构建环境、制品信息、制品内容、依赖组件等多种维度信息,为软件项目生成软件物料清单(SBOM)的一款CLI工具。

项目详情

OSS Compass Analyze

SBOM-TOOL

English | 简体中文

SBOM-TOOL 是通过源码仓库、代码指纹、构建环境、制品信息、制品内容、依赖组件等多种维度信息,为软件项目生成软件物料清单(SBOM)的一款CLI工具。

功能特性

信息采集

  • 采集源代码工程信息,包括仓库地址、版本信息等
  • 采集并生成代码指纹,利用一定算法生成代码指纹
  • 采集工程构建依赖环境信息,包括操作系统、内核、编译器、构建工具等
  • 采集工程构建的依赖组件,支持多种语言、多种包管理器的依赖采集
  • 采集最终制品包信息,包括包名、类型、唯一校验码等
  • 采集制品内容信息,包括文件名类型、唯一校验码等

    SBOM文档

  • 组装SBOM文档,基于上述采集的信息组装标准SBOM文档
  • 规范格式转换,支持XSPDX、SPDX等规范,支持JSON等格式
  • 规范格式校验,支持XSPDX、SPDX等规范,支持JSON等格式

代码指纹生成能力

开发语言是否支持
C/C++是
Java是
C#是
Dart是
Golang是
Javascript是
Objective-C是
Php是
Python是
Ruby是
Rust是
Swift是
Lua是

依赖包扫描能力

现已支持以下编程语言相关的配置文件解析、二进制包解析,后续会逐步支持更多的编程语言。

包类型包管理器解析文件是否支持依赖图谱
mavenMavenpom.xml *.jar *.war`[graph]maven-dependency-tree.txt(mvn dependency:tree -DoutputFile=maven-dependency-tree.txt)`是
mavenGradle*.gradle .gradle.lockfile [graph]gradle-dependency-tree.txt(gradlew gradle-baseline-java:dependencies > gradle-dependency-tree.txt)是
conanConanconanfile.txt conan.lock`[graph]conan-graph-info.json(conan graph info -f json > conan-graph-info.json)`是
npmNPMpackage.json package-lock.json否
npmYarn[graph]yarn.lock是
npmPNPM[graph]pnpm.lock是
golangGo Modulego.mod Go Binary file [graph]go-mod-graph.txt(go mod graph > go-mod-graph.txt)是
golangGlideglide.yml glide.yaml否
golangGoDepGodeps.json否
golangDepGopkg.toml否
golangGVT*/vendor/manifest否
pypiPIPPipfile.lock *dist-info/METADATA PKG-INFO *requirements*.txt setup.py [graph]pipenv-graph.txt(pipenv graph > pipenv-graph.txt)是
pypiPoetry[graph]poetry.lock是
condaCondaenvironment.yml environment.yaml package-list.txt否
composerComposercomposer.json composer.lock否
cargoCargoCargo.toml [graph]Cargo.lock Rust Binary file是
carthageCarthageCartfile Cartfile.resolved否
swiftSwiftPMPackage.swift否
cocoapodsCocoapodsPodfile.lock`Podfile *.podspec`是
gemGem[graph]Gemfile.lock`Gemfile *.gemspec`是
nugetNuGet[graph]*.deps.json *.csproj *.vbproj *.fsproj *.vcproj *.nuget.dgspec.json *.nuspec packages.json packages.lock.json是
pubPub[graph]pub-deps.json(dart pub deps --json > pub-deps.json) pubspec.lock pubspec.yaml是
rpmRPM*.spec否
debDEB*.deb`*.control`否
luaLuaRocks*.rockspec否
bowerBower*.spec否

软件架构

SBOM-TOOL整体架构

下载安装

  1. 下载源码编译(需要 go 1.18 及以上版本)

    git clone git@gitee.com:JD-opensource/sbom-tool.git
    cd sbom-tool
    make

    默认生成多个系统架构的程序二进制包

    • Linux X86_64:sbom-tool-linux-amd64
    • Linux arm64:sbom-tool-linux-arm64
    • Windows X86_64:sbom-tool-windows-amd64.exe
    • Windows arm64:sbom-tool-windows-arm64.exe
    • MacOS amd64: sbom-tool-darwin-amd64
    • MacOS arm64: sbom-tool-darwin-arm64

或者通过 go install 安装

go install gitee.com/JD-opensource/sbom-tool/cmd/sbom-tool@latest

或者通过下载二进制文件安装: SBOM-TOOL发行版

子命令说明

子命令功能
help工具帮助手册
artifact采集软件包制品信息
assembly把各阶段生成的文档组装为SBOM文档
completion为指定的shell生成自动完成脚本
convert转换SBOM文档格式
env生成环境信息
generate生成SBOM文档
package收集包依赖项
source收集源代码信息
validate验证SBOM文档格式
info获取工具介绍信息
modify修改SBOM文档属性

参数说明

参数短参数描述使用样例
--log-level 指定日志级别,包括 debug、info、warn、error--log-level info
--log-path 指定日志路径,默认在用户主目录下自动生成日志目录及日志文件($home/sbom-tool/sbom-tool.log)--log-path /tmp/sbom.log
--quiet -q无控制台输出--quiet -q
--ignore-dirs 要忽略的目录,跳过所有点目录,以逗号分隔。示例:NODE_MODULES,LOGS--ignore-dirs log,logs
--language-l指定语言(目前支持:java,cpp)(默认为“*”)--language java -l cpp
--parallelism-m并发度(默认为8)--parallelism 4 -m 9
--output-o指定结果输出文件存放路径及名称,默认会在当前目录下自动生成--output /tmp/sbom.json
--src-s指定源代码存放路径,默认为当前目录--src /tmp/sbomtool/src/
--path-p指定项目工程主目录;assembly子命令中用于指定各阶段临时文档路径--path /tmp/sbomtool/
--dist -d指定制品存放路径,默认为当前目录--dist /tmp/sbomtool/bin/
--format-f指定SBOM文档格式(目前支持:xspdx-json、spdx-json、spdx-tagvalue)(默认为spdx-json)--format spdx-json -f spdx-json
--input-i指定SBOM文档作为输入--input /tmp/sbom.jsom
--algorithm-a用于指定生成SBOM文档标识的算法(目前支持:SHA1、SHA256、SM3)(默认为SM3)--algorithm SHA256

SBOM文档规范与格式

规范格式SBOM文档格式是否支持
XSPDXJSONxspdx-json已支持
SPDXJSONspdx-json已支持
SPDXTagValuespdx-tagvalue已支持

XSPDX 是基于SPDX扩展的SBOM格式规范

使用示例

生成SBOM文档并指定格式

sbom-tool generate -m 4 -p ${project_path} -s ${src_path} -d ${dist_path}  -o sbom.spdx.json -f spdx-json --ignore-dirs .git  -n ${name} -v ${version} -u ${supplier} -b ${namespace}

获取工具介绍信息

sbom-tool info

更多使用案例,详见文档

开发指南

详见 开发指南文档

问题反馈&联系我们

如果在使用中遇到问题,欢迎您向我们提交ISSUE。

如何贡献

SBOM-TOOL 是一款开源的软件成分分析工具,期待您的贡献。

许可证

此项目是在 MulanPSL2 下授权的,有关详细信息,请参阅许可证文件。

⬇️ 下载地址

喜欢就支持一下吧
点赞 0 分享 赞赏
评论 抢沙发
OωO
取消
广告