Software Bill of Materials とは? - build の材料一覧
software bill of materials(SBOM)とは、あるソフトウェアに含まれるすべてのコンポーネントと依存関係の、完全で機械可読な一覧です。
自分が何を持っているか分からないものは守れません。software bill of materials は、あなたの build の材料一覧です。すべてのライブラリ、バージョン、推移的依存関係が、標準的な形式で記録されています。脆弱性が公表されたとき、SBOM があれば「自分たちは影響を受けているか?」に、数日ではなく数秒で答えられます。
SBOM に含まれるもの
- すべての直接および推移的な依存関係と、そのバージョン。
- 各コンポーネントのライセンス情報。
- 正確な artifact を固定する暗号ハッシュ。
- 利用可能な場合の、供給元と出所のメタデータ。
標準形式
支配的な 2 つの形式は SPDX と CycloneDX です。どちらも機械可読であるため、ツールがそれらを取り込み、脆弱性データベースと照合し、影響を受けるコンポーネントを自動的にフラグ付けできます。
なぜ不可欠になったのか
広範な脆弱性が発生したとき、緊急の問いは「自分たちのどのシステムが影響を受けるライブラリを、どのバージョンで使っているか?」です。SBOM がなければ、それは慌ただしい手作業の捜索です。あれば、クエリで済みます。数々のインシデントが、SBOM を本格的なソフトウェアにとっての基本的な期待事項にしました。
CI で生成する
SBOM は、完全な依存関係ツリーが判明する build 中に生成されます。Syft のようなツールや、パッケージマネージャーのネイティブな出力が、build の artifact として SBOM を生成し、それをリリースとともに保存してスキャンに投入します。
SBOM に attestation を加える
SBOM は、信頼できるときに最も価値があります。SBOM を特定の build に結び付ける署名済みの attestation と組み合わせれば、材料一覧が事後に編集されていないことを証明でき、build の provenance に結び付けられます。
重要なポイント
- SBOM は、build のコンポーネントの完全で機械可読なインベントリである。
- SPDX と CycloneDX が標準形式であり、build 中に生成する。
- 「自分たちは影響を受けているか?」を、手作業の捜索から高速なクエリへ変える。