bom
:SBOM 多功能工具bom
? bom
是一个实用程序,可让您创建、查看和转换软件物料清单 (SBOM)。 bom
是作为项目的一部分创建的,旨在为 Kubernetes 项目创建 SBOM。它使软件作者能够以简单而强大的方式为其项目生成 SBOM。
bom 是 Linux 基金会自动化合规性 Toling TAC 中孵化的一个项目
bom
是一个通用工具,可以从目录、容器映像、单个文件和其他源生成 SPDX 包。该实用程序具有内置许可证分类器,可识别 SPDX 目录中的 400 多个许可证。
其他功能包括 Golang 依赖性分析和扫描 git 存储库时的完整.gitignore
支持。
有关如何为项目创建 SBOM 的更深入说明,请参阅“为项目生成物料清单”。
该指南包含有关什么是软件物料清单、SPDX 标准以及将文件、图像、目录和其他源添加到 SBOM 的说明。
bom generate
bom document
安装bom
:
go install sigs.k8s.io/bom/cmd/bom@latest
bom generate
bom generate
是用于生成 SPDX 清单的bom
子命令。
目前支持从文件、图像和 docker 存档(tarball 中的图像)创建 SBOM。它支持从远程注册表中提取图像进行分析。
bom 可以使用越来越多的分析器来更深入地研究图像,这些分析器旨在为常见的基础图像添加更多意义。
SBOM 数据还可以导出到完整的来源证明。输出将生成一份出处声明,列出所有 SPDX 数据作为整体主题,但准备在 CI/CD 管道的后续阶段完成。有关更多详细信息,请参阅 --provenance 标志。
Usage:
bom generate [flags]
Flags:
-a, --analyze-images go deeper into images using the available analyzers
--archive strings list of archives to add as packages (supports tar, tar.gz)
-c, --config string path to yaml SBOM configuration file
-d, --dirs strings list of directories to include in the manifest as packages
-f, --file strings list of files to include
--format string format of the document (supports tag-value, json) (default "tag-value")
-h, --help help for generate
--ignore strings list of regexp patterns to ignore when scanning directories
-i, --image strings list of images
--image-archive strings list of docker archive tarballs to include in the manifest
-l, --license string SPDX license identifier to declare in the SBOM
--name string name for the document, in contrast to URLs, intended for humans
-n, --namespace string an URI that serves as namespace for the SPDX doc
--no-gitignore don't use exclusions from .gitignore files
--no-gomod don't perform go.mod analysis, sbom will not include data about go packages
--no-transient don't include transient go dependencies, only direct deps from go.mod
-o, --output string path to the file where the document will be written (defaults to STDOUT)
--provenance string path to export the SBOM as an in-toto provenance statement
--scan-images scan container images to look for OS information (currently debian only) (default true)
Global Flags:
--log-level string the logging verbosity, either 'panic', 'fatal', 'error', 'warning', 'info', 'debug', 'trace' (default "info")
bom document
bom document subcommand
可以可视化 SBOM 并查询它们的信息。
bom document → Work with SPDX documents
Usage:
bom document [command]
Available Commands:
outline bom document outline → Draw structure of a SPDX document
query bom document query → Search for information in an SBOM
bom document outline
使用bom document outline
也可以呈现 SBOM 内容,并查看它们包含的信息的结构。以下是为 amd64 渲染debian:bookworm-slim
图像的示例:
bom generate --output=debian.spdx --image
debian@sha256:0aac521df91463e54189d82fe820b6d36b4a0992751c8339fbdd42e2bc1aa491 | bom document outline -
bom document outline debian.spdx
_
___ _ __ __| |_ __
/ __| '_ / _` / /
__ |_) | (_| |> <
|___/ .__/ __,_/_/_
|_|
SPDX Document SBOM-SPDX-71f1009c-dc17-4f4d-b4ec-72210c1a8d7f
│
│ ? DESCRIBES 1 Packages
│
├ sha256:0aac521df91463e54189d82fe820b6d36b4a0992751c8339fbdd42e2bc1aa491
│ │ ? 1 Relationships
│ └ CONTAINS PACKAGE sha256:b37cbf60a964400132f658413bf66b67e5e67da35b9c080be137ff3c37cc7f65
│ │ │ ? 86 Relationships
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE bsdutils@1:2.38.1-4
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]+git20210903+057cd650a4ed-9
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE diffutils@1:3.8-3
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]~rc1-1+b1
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]+nmu1
│ │ ├ CONTAINS PACKAGE [email protected]
[trimmed]
以下示例展示了 bom 如何处理不同的来源以生成 SPDX 物料清单。可以组合多个源以获得描述不同包的文档。
要将目录作为 SBOM 的源进行处理,请使用-d
标志或仅将路径(或当前目录)作为bom generate
的第一个参数传递:
bom generate .
此示例拉取kube-apiserver
映像,对其进行分析,并在 SBOM 中进行描述。然后,其每个层在结果文档中表示为子包:
bom generate -n http://example.com/ --image registry.k8s.io/kube-apiserver:v1.21.0
您可以仅使用清单中的文件创建 SBOM。为此,请使用-f
:
bom generate -n http://example.com/
-f Makefile
-f file1.exe
-f document.md
-f other/file.txt
参与 Kubernetes 社区受 Kubernetes 行为准则约束。