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

[](#sbom-tool)SBOM-TOOL

English | 简体中文

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

[](#%E5%8A%9F%E8%83%BD%E7%89%B9%E6%80%A7)功能特性

[](#%E4%BF%A1%E6%81%AF%E9%87%87%E9%9B%86)信息采集

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

[](#sbom%E6%96%87%E6%A1%A3)SBOM文档

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

[](#%E4%BB%A3%E7%A0%81%E6%8C%87%E7%BA%B9%E7%94%9F%E6%88%90%E8%83%BD%E5%8A%9B)代码指纹生成能力

开发语言

是否支持

C/C++

Java

C#

Dart

Golang

Javascript

Objective-C

Php

Python

Ruby

Rust

Swift

Lua

[](#%E4%BE%9D%E8%B5%96%E5%8C%85%E6%89%AB%E6%8F%8F%E8%83%BD%E5%8A%9B)依赖包扫描能力

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

包类型

包管理器

解析文件

是否支持依赖图谱

maven

Maven

  • pom.xml
  • *.jar
  • *.war
  • [graph]maven-dependency-tree.txt(mvn dependency:tree -DoutputFile=maven-dependency-tree.txt)

maven

Gradle

  • *.gradle
  • .gradle.lockfile
  • [graph]gradle-dependency-tree.txt(gradlew gradle-baseline-java:dependencies > gradle-dependency-tree.txt)

conan

Conan

  • conanfile.txt
  • conan.lock
  • [graph]conan-graph-info.json(conan graph info -f json > conan-graph-info.json)

npm

NPM

  • package.json
  • package-lock.json

npm

Yarn

  • [graph]yarn.lock

npm

PNPM

  • [graph]pnpm.lock

golang

Go Module

  • go.mod
  • Go Binary file
  • [graph]go-mod-graph.txt(go mod graph > go-mod-graph.txt)

golang

Glide

  • glide.yml
  • glide.yaml

golang

GoDep

  • Godeps.json

golang

Dep

  • Gopkg.toml

golang

GVT

  • */vendor/manifest

pypi

PIP

  • Pipfile.lock
  • *dist-info/METADATA
  • PKG-INFO
  • *requirements*.txt
  • setup.py
  • [graph]pipenv-graph.txt(pipenv graph > pipenv-graph.txt)

pypi

Poetry

  • [graph]poetry.lock

conda

Conda

  • environment.yml
  • environment.yaml
  • package-list.txt

composer

Composer

  • composer.json
  • composer.lock

cargo

Cargo

  • Cargo.toml
  • [graph]Cargo.lock
  • Rust Binary file

carthage

Carthage

  • Cartfile
  • Cartfile.resolved

swift

SwiftPM

  • Package.swift

cocoapods

Cocoapods

  • Podfile.lock
  • Podfile
  • *.podspec

gem

Gem

  • [graph]Gemfile.lock
  • Gemfile
  • *.gemspec

nuget

NuGet

  • [graph]*.deps.json
  • *.csproj
  • *.vbproj
  • *.fsproj
  • *.vcproj
  • *.nuget.dgspec.json
  • *.nuspec
  • packages.json
  • packages.lock.json

pub

Pub

  • [graph]pub-deps.json(dart pub deps --json > pub-deps.json)
  • pubspec.lock
  • pubspec.yaml

rpm

RPM

  • *.spec

deb

DEB

  • *.deb
  • *.control

lua

LuaRocks

  • *.rockspec

bower

Bower

  • *.spec

[](#%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84)软件架构

SBOM-TOOL整体架构

[](#%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85)下载安装

  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发行版

[](#%E5%AD%90%E5%91%BD%E4%BB%A4%E8%AF%B4%E6%98%8E)子命令说明

子命令

功能

help

工具帮助手册

artifact

采集软件包制品信息

assembly

把各阶段生成的文档组装为SBOM文档

completion

为指定的shell生成自动完成脚本

convert

转换SBOM文档格式

env

生成环境信息

generate

生成SBOM文档

package

收集包依赖项

source

收集源代码信息

validate

验证SBOM文档格式

info

获取工具介绍信息

modify

修改SBOM文档属性

[](#%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E)参数说明

参数

短参数

描述

使用样例

--log-level

指定日志级别,包括 debuginfowarnerror

--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

指定语言(目前支持:javacpp)(默认为“*”)

--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-jsonspdx-jsonspdx-tagvalue)(默认为spdx-json)

--format spdx-json -f spdx-json

--input

-i

指定SBOM文档作为输入

--input /tmp/sbom.jsom

--algorithm

-a

用于指定生成SBOM文档标识的算法(目前支持:SHA1SHA256SM3)(默认为SM3)

--algorithm SHA256

[](#sbom%E6%96%87%E6%A1%A3%E8%A7%84%E8%8C%83%E4%B8%8E%E6%A0%BC%E5%BC%8F)SBOM文档规范与格式

规范

格式

SBOM文档格式

是否支持

XSPDX

JSON

xspdx-json

已支持

SPDX

JSON

spdx-json

已支持

SPDX

TagValue

spdx-tagvalue

已支持

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

[](#%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B)使用示例

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

更多使用案例,详见文档

[](#%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97)开发指南

详见 开发指南文档

[](#%E9%97%AE%E9%A2%98%E5%8F%8D%E9%A6%88%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC)问题反馈&联系我们

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

[](#%E5%A6%82%E4%BD%95%E8%B4%A1%E7%8C%AE)如何贡献

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

[](#%E8%AE%B8%E5%8F%AF%E8%AF%81)许可证

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


原网址: 访问
创建于: 2024-05-29 16:25:34
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论