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 行為準則約束。