Syft vs cdxgen: SBOM ジェネレータの比較
どちらも software bill of materials を生成します。Syft (Anchore) はコンテナと OS パッケージのカタログ化に優れ、SPDX と CycloneDX を出力し、cdxgen (OWASP) は CycloneDX に集中し、非常に広範な言語とエコシステムをカバーします。
Syft と cdxgen はどちらも SBOM を生成し、build に何が入っているかを把握して脆弱性スキャナに渡せるようにします。Syft はコンテナイメージと OS パッケージに強く、cdxgen は多くの言語にまたがるアプリケーションの依存関係に強いです。ここでは率直な比較を示します。
| Syft | cdxgen | |
|---|---|---|
| フォーマット | SPDX + CycloneDX + Syft JSON | CycloneDX (主要) |
| 強み | コンテナ + OS パッケージのカタログ化 | 広範なアプリ言語/エコシステムのカバレッジ |
| エコシステム | Anchore (Grype と組み合わせ) | OWASP (Dep-Track と組み合わせ) |
| コンテナイメージ | 第一級 | サポート |
| 言語の深さ | 多数のエコシステム | 非常に広範、多数の言語 |
| 統合 | Grype、Attestations | OWASP Dependency-Track |
コンテナ vs アプリケーションの焦点
Syft はコンテナイメージと OS レベルのパッケージ (apk、deb、rpm) はもちろん言語の依存関係のスキャンにも優れ、脆弱性スキャンのために Grype と自然に組み合わさります。cdxgen はアプリケーションのエコシステムと言語をまたいで非常に広い網を張るため、多言語のコードベースに便利で、継続的な監視のために OWASP Dependency-Track と緊密に統合します。
フォーマットと下流のツール
Syft は SPDX と CycloneDX の両方を出力し、どのコンシューマを使うにも柔軟性を与えます。cdxgen は CycloneDX を中心とし、パイプラインがそこに標準化しているなら強く適合します。すでに使っている SBOM フォーマットと下流のツール (Grype、Dependency-Track、attestation フロー) によっても選びましょう。
CI では
すべての build で SBOM を生成し、artifact として保存し、スキャナに渡しましょう。Syft と Grype はコンテナイメージ向けの一般的なパイプラインであり、cdxgen と Dependency-Track は継続的なアプリ依存関係の監視に向いています。
結論
SPDX/CycloneDX 出力と Grype へのクリーンな経路を備えたコンテナと OS パッケージの SBOM には Syft を、広範なアプリケーション言語のカバレッジと OWASP Dependency-Track には cdxgen を選びましょう。どちらも堅実なので、フォーマットと下流のツールで選びましょう。