現代のアプリケーションはもはや巨大なモノリスではなく、マイクロサービス、オープンソースコンポーネント、およびサードパーティツールの集合体です。しかし、これによりアプリケーションの内部を実際に理解することが非常に困難になります。特に、私たちのオープンソースの依存関係もまたオープンソースの依存関係を持っていることを考慮すると、なおさらです!
ここでは、Software Bill of Materials (SBOM) が重要な役割を果たします。SBOMは、すべてのソフトウェアコンポーネントの詳細なインベントリを提供します。これは、ソフトウェアを理解するのに役立つだけでなく、リスクを特定し、コンプライアンスおよびガバナンス要件を満たすことを可能にします。
SBOMがうまく機能するためには、さまざまなシステムやツール間で標準化され、簡単に共有できる必要があります。ここでSBOMの標準が不可欠になります。
SBOM標準を理解する。
SBOM標準は、SBOMデータの作成と共有のための共通フォーマットを確立します。これらは統一された言語を提供し、さまざまな組織やツール間での一貫したコミュニケーションを保証します。
SBOMは、コンポーネント、バージョン、ライセンス、依存関係に関する詳細が長く詰まっている可能性があるため、標準化が必要です。標準形式がなければ、異なるエンティティにとってSBOMデータの解釈と使用は困難になります。
現在、業界では主に3つのSBOM標準が普及しています:
- CycloneDX:セキュリティに焦点を当てた軽量な標準であり、ソフトウェア、ハードウェア、サービスを含む様々なBOMタイプをサポートしています。
- SPDX(Software Package Data Exchange):ISOによって認識されている唯一のSBOM標準であり、コンポーネントデータへの包括的なアプローチとソフトウェアライセンスにおける起源で知られています。
- SWID (Software Identification) Tags:ソフトウェアの識別を重視し、資産管理のためにインストールされたソフトウェアの追跡を支援します。
各標準には特定の強みとユースケースがあり、これらについてはさらに詳しく説明します。
CycloneDXの概要
- セキュリティのユースケースに特化して構築されています(例:脆弱性追跡、VEXサポート、コンポーネントハッシュ化)。
- VEX (Vulnerability Exploitability eXchange)と依存関係ツリーをネイティブでサポートします。
- OWASP Dependency-Check、Anchore、GitHub Advanced Securityなどの最新のDevSecOpsパイプラインおよびツールと互換性があります。
- 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バージョン: SPDX-2.3
データライセンス: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
ドキュメント名: example-sbom
ドキュメントネームスペース: http://spdx.org/spdxdocs/example-sbom
作成者: ツール: SPDX-Tools
作成日時: 2025-05-08T12:00:00Z
パッケージ名: example-lib
SPDXID: SPDXRef-Package-example-lib
パッケージバージョン: 1.0.0Package
ダウンロード場所: NOASSERTION
パッケージライセンス(結論): MIT
パッケージライセンス(宣言): MIT
パッケージチェックサム: SHA256: abcdef1234567890abcdef1234567890abcdef1234569uiSWID Tagsについて
- エンタープライズソフトウェア資産管理を対象としています。
- ISO/IEC 19770-2として標準化されており、政府・軍事分野に非常に特化しています。
- FedRAMP、NIST 800-171、および関連するコンプライアンスフレームワークで使用されます。
SWID Tagsは、明確なソフトウェア製品の区別を重視します。包括的なSBOMとは異なり、SWID Tagsは個々のソフトウェアパッケージを識別し、正確なインベントリ管理に不可欠です。
資産管理において、SWID Tagsはソフトウェアのインストールを追跡するための標準化された方法を提供し、組織が正確なソフトウェア環境を維持できるようにします。これにより、コンプライアンスの遵守と資産管理戦略の最適化に役立ちます。
SWID Tagsは、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 Tagsを区別するには、まずその機能から始めます。CycloneDXは、動的なセキュリティ環境における柔軟なBOM管理に対応します。SPDXはコンプライアンス追跡に優れており、SWID Tagsは正確なソフトウェア識別を重視します。以下に簡単な比較を示します。
CycloneDXの構造は透明性のニーズに対応しています。SPDXは、コンプライアンス監視のための詳細なドキュメントとデータ整合性を提供します。
各標準は特定のニーズに適しています。CycloneDXは、迅速でセキュアな開発を優先するチームに適しています。SPDXは、コンプライアンスを重視する組織に魅力的です。SWID Tagsは、正確な追跡を保証することで資産管理を強化します。
これらのフォーマット間の変換ツールは、相互運用性を維持するために不可欠です。高度なソリューションにより、組織は各標準の強みを活用し、特定の要件に合わせて戦略を調整できます。
適切なSBOM標準の選定
SBOMを1つのフォーマットで生成するだけでは不十分です。内部監査人、政府機関、またはエンタープライズ顧客など、さまざまなステークホルダーは、既存のツールやワークフローに取り込むために、特定のフォーマットのSBOMを要求する場合があります。例えば:
- 連邦政府の契約ではSPDXが要求される場合がありますが、リスク評価を実施するセキュリティベンダーはCycloneDXを好む場合があります。
- 一部のCI/CDシステムは、ポリシー適用または自動スキャンのために、特定のSBOM形式のみをサポートする場合があります。
ツールが重要です:複数のフォーマットをサポートするものを選びましょう。
この多様性を考慮すると、同じソースアーティファクトから複数の形式でSBOMを生成できるツールを選択する必要があります。Aikido Securityのようなツールは、ビルドパイプラインまたはセキュリティスキャン中にSBOMを自動的に生成し、必要に応じてCycloneDX、SPDXなどの形式でエクスポートすることで、このプロセスを簡素化します。
このマルチフォーマット機能により、作業の重複や手動変換によるエラーを発生させることなく、多様な要件に対してコンプライアンスを維持できます。

