最近のアプリケーションはもはや巨大なモノリスではなく、マイクロサービス、オープンソースコンポーネント、サードパーティツールの集合体だ。しかしそのため、アプリケーションの内部を実際に理解することは非常に難しくなっている。特に、オープンソースの依存関係にもオープンソースの依存関係があることを考慮するとなおさらだ!
ここで重要な役割を果たすのが、ソフトウェア部品表(SBOM)である。SBOMは、すべてのソフトウェア・コンポーネントの詳細なインベントリーを提供する。これは単にソフトウェアを理解するのに役立つだけでなく、リスクを特定し、コンプライアンスとガバナンスの要件を満たすことを可能にする。
SBOMがうまく機能するためには、標準化され、さまざまなシステムやツール間で容易に共有される必要がある。ここでSBOMの標準が不可欠となる。
SBOM規格の理解
SBOM標準は、SBOMデータを作成し共有するための共通フォーマットを確立する。それらは統一された言語を提供し、異なる組織やツール間で一貫したコミュニケーションを保証する。
SBOMは長くなり、コンポーネント、バージョン、ライセンス、依存関係についての詳細が詰め込まれることがあるため、標準化が必要である。標準的な形式がなければ、SBOM データの解釈と使用は、さまざまな事業体にとって困難になる。
現在、業界では主に3つのSBOM規格が普及している:
- CycloneDX: セキュリティに重点を置いた軽量規格で、ソフトウェア、ハードウェア、サービスを含む様々なBOMタイプをサポートする。
- SPDX (Software Package Data Exchange):ISOによって承認された唯一のSBOM標準であり、コンポーネントデータへの包括的なアプローチとソフトウェアライセンシングの起源として知られている。
- SWID(ソフトウェア識別)タグ:ソフトウェアの識別に焦点を当て、資産管理のためにインストールされたソフトウェアの追跡を支援する。
各標準には固有の長所と使用例があり、これについてはさらに詳しく説明する。
CycloneDXの概要
- セキュリティのユースケース(脆弱性の追跡、VEXのサポート、コンポーネントのハッシュ化など)のために特別に構築されている。
- VEX(Vulnerability Exploitability eXchange)と依存関係ツリーをネイティブにサポート。
- 最新のDevSecOpsパイプラインやOWASP Dependency-Check、Anchore、GitHub Advanced Securityなどのツールと互換性があります。
- CI/CD環境への統合が容易(軽量、JSONフレンドリー)。
CycloneDXは、その効率性と堅牢なセキュリティ機能で際立っています。迅速な統合を可能にする設計により、俊敏性とセキュリティを重視するチームに最適です。CycloneDXはソフトウェア、ハードウェア、サービス関連資料をカバーしており、さまざまなテクノロジー環境に対応します。
CycloneDXは、XML、JSON、protobufを含む複数のデータ形式をサポートしており、さまざまなツールとの互換性を確保しています。OWASPの傘下で、CycloneDXはソフトウェアサプライチェーンにおける現在のセキュリティ課題に対処するために継続的に進化しています。
CycloneDXのフォーマット例
{
"bomFormat": "CycloneDX",
"specVersion": "1.5",
"version": 1,
"components": [
{
"type": "library",
"name": "example-lib",
"version": "1.0.0",
"purl": "pkg:npm/example-lib@1.0.0",
"licenses": [{ "license": { "id": "MIT" } }]
}
]
}
SPDXを探る
- 法務チームとIPデューデリジェンス(強力なライセンシングメタデータモデル)を対象としている。
- 豊富なライセンス表現言語(SPDXライセンスリスト)。
- ISO/IEC 5962:2021で標準化されている。
- OpenChain、ORT、Ternなどの主要な取り組みで使用されている。
SPDXは、ISOの認定を受けた唯一のSBOM標準として世界的に認められており、その信頼性を高めています。当初はソフトウェアライセンシングのために作られたSPDXは、より広範なソフトウェアの透明性のニーズを満たすために拡張されてきました。
SPDXは、タグ/値、JSON、XML、YAML、RDFなどの複数のデータ形式をサポートし、さまざまなツールやプラットフォームとスムーズに統合できます。SPDXは、ソフトウェアコンポーネントの詳細な洞察を提供し、詳細なコンプライアンスとセキュリティ追跡のためにファイルやコードスニペットを文書化します。
SPDXフォーマットの例
SPDXVersion:SPDX-2.3
DataLicense:CC0-1.0
SPDXID: SPDXRef-DOCUMENT
ドキュメント名:example-sbom
DocumentNamespace: http://spdx.org/spdxdocs/example-sbom
Creator:ツール:SPDXツール
作成されました: 2025-05-08T12:00:00Z
パッケージ名: example-lib
SPDXID: SPDXRef-Package-example-lib
パッケージバージョン: 1.0.0Package
ダウンロード場所指定なし
パッケージライセンスMIT
パッケージライセンスMIT
PackageChecksum: SHA256: abcdef1234567890abcdef1234567890abcdef1234569ui
SWIDタグを理解する
- 企業のソフトウェア在庫管理を対象としている。
- ISO/IEC 19770-2として標準化されている。
- FedRAMP、NIST 800-171、および関連するコンプライアンスフレームワークで使用される。
SWIDタグは、ソフトウェア製品の明確な定義に重点を置いています。包括的なSBOMとは異なり、SWIDタグは、正確な在庫管理のために重要な個々のソフトウェアパッケージを識別します。
資産管理において、SWIDタグはソフトウェアのインストールを追跡するための標準化された方法を提供し、組織が正確なソフトウェアランドスケープを維持することを保証します。これは、コンプライアンスと資産管理戦略の最適化に役立ちます。
SWIDタグはSCAPやTCG標準のようなフレームワークと統合し、セキュリティやコンプライアンスにおける役割を強化する。
SWIDフォーマットの例
<SoftwareIdentity xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd" name="example-lib"
version="1.0.0"
tagId="example-lib@1.0.0"
patch="false"
</SoftwareIdentity>
SBOM規格の比較
CycloneDX、SPDX、SWIDタグを区別するために、それぞれの特徴から説明します。CycloneDXは、ダイナミックなセキュリティ環境における柔軟な部品表管理に対応します。SPDXはコンプライアンス・トラッキングに優れ、SWIDタグは正確なソフトウェア識別に重点を置いています。簡単に比較してみましょう:
CycloneDXの構造は、透明性の必要性に対応しています。SPDXは、コンプライアンス監視のための詳細な文書化とデータの完全性を提供します。
それぞれの標準は特定のニーズに適しています。CycloneDXは、迅速でセキュアな開発を優先するチームに適している。SPDXはコンプライアンスを重視する組織に適しています。SWIDタグは、正確な追跡を保証することで資産管理を強化します。
これらのフォーマット間の変換ツールは、相互運用性を維持するために不可欠である。高度なソリューションにより、組織はそれぞれの規格の長所を生かし、特定の要件を満たすように戦略を調整することができる。
正しいSBOM規格の選択
SBOMを1つのフォーマットで生成するだけでは不十分である。内部監査人、政府機関、または企業顧客など、さまざまな利害関係者が、既存のツールまたはワークフローに取り込むために、特定の形式でSBOMを必要とする場合がある。たとえば
- 連邦政府との契約ではSPDXが要求されるかもしれないが、リスク評価を行うセキュリティ・ベンダーはCycloneDXを好むかもしれない。
- CI/CDシステムによっては、ポリシーの実施や自動スキャンのために、特定のSBOM形式のみをサポートする場合がある。
ツールの重要性:複数のフォーマットをサポートするものを選ぶ
このようなばらつきを考慮すると、同じソース成果物から複数のフォーマットでSBOMを生成できるツールを選択する必要がある。次のようなツールがある。 Aikido Securityのようなツールは、ビルドパイプラインまたはセキュリティスキャン中にSBOMを自動的に生成し、必要に応じてCycloneDX、SPDXなどの形式でエクスポートすることによって、このプロセスを簡素化します。
このマルチフォーマット機能により、作業の重複や手動変換によるエラーの発生がなく、多様な要件に対応したコンプライアンスを維持することができます。