こんにちは、アプリケーションサービス部ディベロップメントサービス1課の滝澤です。
本記事をご覧いただきありがとうございます。
皆さんは SBOM という言葉を聞いたことがありますか? 最近は話題に上がることも多くなったので耳にしたことがある方も多いかもしれません。 この記事では「SBOM ってなんなんだ?」といった疑問を解消し、SBOM が注目されている背景などもご紹介できればと思います。
1. SBOMの概要
1-1. SBOMとは
SBOM とは、Software Bill of Materials(ソフトウェア部品表)の 頭文字をとったソフトウェア管理手法の一つです。
ソフトウェア部品表という名の通り、ソフトウェアを構成する以下のデータをリスト化した一覧表です。
製品に含むコンポーネント
互いの依存関係
ライセンス情報 など
1-2. SBOMのニーズ
その情報から、以下のようなニーズに応えることが可能です。
ソフトウェアの構成管理
- 製品に含むコンポーネントの情報やそれらの依存関係を可視化
セキュリティ対策の効率化
- ソフトウェアが含有するOSSの脆弱性や不具合を可視化
規制遵守の基準
- SBOMを提示することで、規制や要件に準拠していることを示すことが可能
ライセンス管理
- ライセンス情報から違反対策が可能
2. 大統領令と最小定義
2-1. 注目される背景
SBOM が注目されるきっかけの1つとなった出来事にジョー・バイデン氏が2021年5月に署名されたセキュリティ強化を目的としたアメリカの大統領令があります。
この大統領令のSec. 4. Enhancing Software Supply Chain Security.
にてソフトウェアのセキュリティとサプライチェーンの透明性を高めるために、SBOMの提供とその標準化を強化することが記述されています。
2-2. SBOMの最小要素の定義
上記の大統領令を受けて NTIA が SBOM の最小要素を定義するパブリックコメントを残した。
以下の資料は、その大統領令ならびにパブリックコメントに対するまとめとして経済産業省のサイバーセキュリティ課が提供している資料の1ページです。
SBOM の最小要素には、「データフィールド」、「自動化サポート」、「プラクティスとプロセス」の3つのカテゴリがあり、「データフィールド」では SBOM が持つ情報自体の定義、「自動化サポート」ではフォーマット(後述)によって可読性や自動化をサポートすること、「プラクティスとプロセス」ではSBOM 利用者の運用面で実施すべきことが書かれています。
3. SBOM のフォーマット
3-1. フォーマットの種類
最小要素の「自動化サポート」にもあった通り、SBOMにはフォーマットがいくつか存在します。
ここでは先の資料でも触れていた SPDX、CycloneDX、SWIDタグ について紹介します。
SPDX
目的
ソフトウェアパッケージ内のコンポーネント、ライセンス、著作権情報などを文書化するための標準フォーマットです。
特徴
様々なファイルフォーマット(JSON, XML, RDF など)に対応し、様々なツールによる生成や解析が可能です。 最小要素をクリアしています。
SPDX.Lite
目的
SPDX の簡易版で、小規模プロジェクトや初心者向けに設計されています。
特徴
主要な情報のみを含むため、SPDXのフルバージョンに比べてシンプルで理解しやすいです。 一方で、最小要素にはデータフィールドの依存関係が足りていません。
CycloneDX
目的
CycloneDX は、ソフトウェアの依存関係やセキュリティ関連の脆弱性情報を記録するために設計されたフォーマットです。
特徴
SPDX に比べセキュリティ管理に強みがあるのが特徴です。 最小要素はクリアしています。
SWIDタグ
目的
ソフトウェア製品とそのコンポーネントを一意に識別するためのフォーマットです。
特徴
XML形式で提供され、コンポーネントと依存関係をカタログ化することが目的に適しています。 最小要素はクリアしています。
3-2. フォーマットの選び方
フォーマットはどれが優れている、劣っているといったものではなく、目的に合わせた選び方が重要です。
ここで紹介した各フォーマットの目的や特徴から、ご自身の目的にあったものを選んでいただくとより効果的に SBOM を活用できるのではないかと思います。
4. 終わりに
最後までお読み頂きありがとうございました。
本記事では、SBOM の概要、注目される背景、フォーマットについて紹介しました。
冒頭でも触れた通り、話題に上がることも多くなり今後活躍の場が多くなるであろう SBOM について、皆様の理解の一助となれれば幸いです。