このプロジェクトについて

このプロジェクトはLinux FoundationのAutomating Compliance Tooling TACの下でインキュベートされており、元々はKubernetesプロジェクト用のSBOMを生成するために開発されました。その中核機能は主に3つの領域をカバーしています。第一に、SBOM生成:bom generateサブコマンドは、ローカルディレクトリ、個別ファイル、リモートでプルしたコンテナイメージ、ローカルのDocker tarアーカイブ、tar/tar.gzアーカイブファイルなど、複数のソースからSPDX形式のSBOMを作成することをサポートしています。デフォルトではSPDX 2.3 JSONまたはタグ値ドキュメントを出力し、protobomを利用したSPDX 3.0.1 JSON-LD出力を実験的にサポートしています。ローカルディレクトリをスキャンする際、デフォルトで.gitignoreルールに従い、--ignoreフラグでカスタム無視パターンをサポートし、--no-gitignoreフラグでgitignoreルールの適用を無効化できます。このツールには、SPDXカタログ内の400以上のライセンスを認識する組み込みライセンス分類子があります。Goモジュールの依存関係を自動的に解決し、Alpine、Debian、RPMベースのコンテナイメージ内のシステムパッケージを識別し、Goバイナリに埋め込まれたビルド情報を抽出して依存モジュールをマッピングできます。また、--provenanceフラグを介してSBOMをin-toto証明書ステートメントとしてエクスポートすることもサポートしており、その後の処理のためにCI/CDパイプラインに直接統合できます。第二に、SBOMドキュメント操作:bom documentサブコマンドは3つの機能を提供します。outlineサブコマンドはSBOMコンテンツ構造をツリーとしてレンダリングし、--purlによるパッケージURLラベル付け、--depthによる表示深度制限、--findによる特定パッケージのソースブランチの特定をサポートします。queryサブコマンドは、深度、名前、パッケージURLなどのフィルタでSBOM内の要素を検索します。dotサブコマンドはSBOM関係グラフをGraphviz DOT形式でエクスポートし、--rootによる指定ルート要素からのレンダリング、--depthによる関係トラバーサル深度制限、--no-filesによるファイル要素の除外をサポートします。第三に、整合性検証:bom validateサブコマンドは、SBOMに記録されたチェックサムに対して個別ファイルまたはディレクトリ全体の整合性をチェックします。さらに、このツールはsigs.k8s.io/bom/pkg/bomパッケージを介してGoライブラリとして使用でき、protobomの形式に依存しないオブジェクトモデルに基づくSBOMの生成、読み取り、書き込みをサポートし、他のSPDXまたはCycloneDX形式への出力シリアライズも可能です。古いsigs.k8s.io/bom/pkg/spdxオブジェクトモデルは非推奨であり、公式の移行ガイドが提供されています。このツールは、go install sigs.k8s.io/bom/cmd/bom@latestを実行して最新バージョンをインストールできます。