bom
: SBOM マルチツールbom
って何ですか? bom
ソフトウェア部品表 (SBOM) を作成、表示、変換できるユーティリティです。 bom
Kubernetes プロジェクトの SBOM を作成するプロジェクトの一部として作成されました。これにより、ソフトウェア作成者は、シンプルかつ強力な方法でプロジェクトの SBOM を生成できます。
bom は、Linux Foundation の Automating Compliance 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 データは、in-toto 出所証明書にエクスポートすることもできます。出力では、すべての SPDX データを in-toto サブジェクトとしてリストする来歴ステートメントが生成されますが、それ以外の場合は、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 を視覚化したり、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 行動規範によって管理されます。