SBOMツール紹介 ~ bom: The SBOM Multitool編 ~

はじめに

こんにちは!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 を作成する機能はないですが、興味のある方は試してみてください。

関連記事

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です