はじめに
こんにちは!PS SLのなーがです。
今回はSBOMツールの一つである「bom: The SBOM Multitool」について解説します。SBOMについてよく分からないという方は、まずこちらの記事を読んでみてください。
bomとは
- ソフトウェア部品表 (SBOM) を作成、表示、変換できるユーティリティ
- Kubernetes プロジェクトの SBOM を作成するプロジェクトの一部として作成された
- ディレクトリ、コンテナー イメージ、単一ファイル、およびその他のソースから SPDX パッケージを生成できる汎用ツール
- SPDX カタログ内の 400 以上のライセンスを認識するライセンス分類子が組み込まれている
- Golang の依存関係分析や、
.gitignore
Git リポジトリのスキャン時の完全なサポートなどがある
環境
OS、ツール | バージョン |
---|---|
Ubuntu | 22.04 |
GO | 1.21.4 |
bom | 0.6.0 |
インストール
GOプロジェクトなので、下記のコマンドでインストールします。
go install sigs.k8s.io/bom/cmd/bom@latest
バージョンを確認します。
bom version
走査対象
JavaでWebアプリケーションを作成する際に使用されるTomcatを対象とします。
SBOMの生成
すべての SPDX ドキュメントは、名前空間を宣言する必要がありますが、今回は全て「http://example.com/」と指定しています。
YAMLファイルからBOMの作成
今回はこちらは省略します。興味のある方は公式ドキュメントを参照してください。
現在のディレクトリからSBOMを作成
generateコマンドにoオプションで出力ファイル名、formatオプションでJsonを指定します。
bom generate -n http://example.com/ -o tomcat-spdx.json --format json .
コンテナイメージから生成
generateコマンドにiオプションでコンテナイメージを指定します。
bom generate -n http://example.com/ -i tomcat:11.0 -o tomcat-image-spdx.json --format json
特定のファイルのみを対象としたい場合
generateコマンドにfオプションでファイル名を指定します。
bom generate -n http://example.com/ \
-o tomcat_spdx.json --format json \
-f java/org/apache/tomcat/JarScannerCallback.java \
-f java/org/apache/tomcat/SimpleInstanceManager.java
その他のオプションについては公式ドキュメントを参照してください。
SPDXドキュメントの構造を描画
documentコマンドにoutlineを指定します。
bom document outline tomcat-spdx.json
オプションは公式ドキュメントを参照してください
SBOM 内の情報を検索
documentコマンドにquery、SPDXファイル、検索条件を指定します。
bom document query tomcat-spdx.json "depth:2 name:log4j"
depthは深さ、nameは検索したい要素を正規表現で指定できる
成果物を sbom と照合してチェックする
validateコマンドとして用意されていますが、こちらは開発中のため今回は省略します。
さいごに
今回はSBOMツールの一つである「bom: The SBOM Multitool」について解説しました。まだメジャーリリースが行われていないので、本来の目的であるKubernetes プロジェクトの SBOM を作成する機能はないですが、興味のある方は試してみてください。