SBOMとは?
SBOM(software bill of materials)は、ソフトウェアに含まれるすべてのコンポーネントの、完全で機械可読なインベントリです。
人気のライブラリに新たな脆弱性が見つかったとき、最初の疑問は「自分たちは影響を受けているか?」です。SBOMはそれに即座に答えます。buildに含まれるすべての依存関係とコンポーネントを列挙するため、推測ではなくインベントリを検索できます。
SBOMが列挙するもの
各コンポーネントを、その名前、バージョン、供給元、そして多くの場合はライセンスと一意な識別子とともに列挙します。解決された依存関係ツリーから生成され、直接コンポーネントも推移的コンポーネントも同様に捕捉します。
標準フォーマット
一般的な2つのフォーマットはSPDXとCycloneDXで、どちらも機械可読です。いずれかに標準化することで、ツールがSBOMを取り込んで脆弱性の照合、ライセンスコンプライアンス、監査に利用できるようになります。
小さな例
Syftのようなスキャナーが、buildしたimageからCycloneDX形式のSBOMを生成します。後日、新たなCVEが出たとき、保存しておいたSBOMをクエリすれば、影響を受けるコンポーネントを含むリリースを正確に特定できます。数日ではなく数秒で。
CIで生成する理由
CIはbuildが行われる場所であり、正確な依存関係のセットが判明している場所です。そのため、SBOMを出力してartifactとして添付するのに最も自然な場所です。リリースとともに保存されれば、出荷したものの永続的な記録となります。
脆弱性を超えて
SBOMはライセンスコンプライアンス(プロプライエタリな製品におけるコピーレフトな依存関係のフラグ付け)にも役立ち、契約や規制でますます求められるようになっています。そのため、すべてのリリースについて残しておく価値のある記録です。
重要なポイント
- SBOMは、buildのすべてのコンポーネントを機械可読な形式で列挙したインベントリです。
- SPDXとCycloneDXが標準フォーマットです。
- CIで生成してリリースに添付すれば、迅速な影響分析が可能になります。