ソフトウェア開発の現場では、ゼロから全部のコードを書くことは殆ど無い。
多くの場合、世界中の開発者が公開しているオープンソースソフトウェア(OSS)や、既存のライブラリを組み合わせて作られている。
OSSを使う際は、そのライセンス条件をきちんと遵守できているかを確認する必要があるところ、OSSの数が多くなるとそれらを全て把握するのは至難の業である。
そんな時に頼りになるのが、ソフトウェアの「部品表」、つまりSBOM(Software Bill of Materials)となる。
この記事では、このSBOMが何なのか、そしてOSSライセンスとどんな関係があるのかをまとめておきたい。
特に知財部員(企業によっては、法務部員)としては、開発側がちゃんとOSSライセンス管理を行っているのかチェックする立場になるかと思うので、SBOMについて理解を深めておくに越したことは無いと思う。
そもそもSBOMとは?
SBOMとは、製品に含むソフトウェアを構成するコンポーネントや互いの依存関係、ライセンスデータなどをリスト化した一覧表のことである。
ソフトウェアは、その殆どが自分でゼロから全部作っているわけではなく、OSSや既製のライブラリを組み合わせて作られている。
SBOMは、その「中に何が入っているか」を一覧にしたドキュメントとなる。
例えば、
- このアプリは「ライブラリA(バージョン1.2.3)」を使っています
- さらに「OSSライブラリB(MITライセンス)」も含まれています
といった情報がSBOMに含まれる。
なぜSBOMが必要なのか?
SBOMが注目される理由は、大きく3つある。
-
セキュリティ
- もし部品のひとつに脆弱性(セキュリティの穴)が見つかった場合、SBOMがあれば「どの製品にその部品が使われているか」がすぐ分かる。
-
法的リスクの回避
- OSSにはさまざまなライセンス条件(MIT、Apache、GPLなど)があり、それぞれに遵守すべきルールがある。SBOMがあれば、どのOSSを使っているかが明確になり、ライセンス違反のリスクを減らせる。
-
顧客や取引先への透明性
- ソフトウェアの品質や安全性を証明する材料として、SBOMは信頼性を高める手段になり得る。
特に、知財部員としては2の観点は見逃せないところである。
SBOMとOSSライセンスの関係
OSSライセンスは、言うなれば「そのソフトウェアやコードをどう使っていいか・配布していいか」を決めたルールブックである。
代表的には、以下のようなものである。
- MITライセンス:ほぼ自由に使えるが著作権表示は必要
- GPLライセンス:改変・再配布時にソースコードの公開義務あり
- Apacheライセンス:特許権の扱いも含む詳細な条件あり
これらの情報を整理する上で、SBOMが役立つ。
SBOMにソフトウェア部品(パッケージやライブラリ)毎のOSSの名前とライセンス情報が載っていれば、開発チームや法務部門は「このOSSはGPLだから配布方法に注意しよう」などの判断がしやすくなる。
SBOMでリスト化される単位
リスト化される単位だが、基本的には「外部から取得したソフトウェア部品(パッケージやライブラリ)」単位となる。
ただし、用途や生成ツール、利用するSBOM標準によって粒度は変わってくる。
一般的な単位
SBOMでは、次のような単位が多い(下に行くほど小さい単位)。
| 単位 | 概要 |
|---|---|
| パッケージ単位 | 依存関係管理ツールが管理する「1つの外部依存パッケージ」ごとに記載 |
| ライブラリ単位 | OSパッケージやシステムライブラリを含む「外部で提供されたライブラリ」ごとに記載 |
| コンポーネント単位 | ソフトウェア構成管理ツールが定義する論理的な部品ごとに記載 |
| ファイル単位(詳細) | ソースコードやバイナリの特定ファイルごとに記載 |
標準仕様ごとの傾向
SBOMの主要な仕様には次のようなものがある。
| 仕様 | 概要 |
|---|---|
| SPDX | パッケージ単位からファイル単位まで細かく書ける。ライセンス情報も詳細に記録可能。 |
| CycloneDX | アプリの依存関係やサプライチェーン全体を表すのが得意。パッケージ単位が多い。 |
| SWID | インストールされたソフトウェア単位(製品やパッケージ)を識別。 |
実務では、最小はファイル単位、最大は製品単位まで幅があるものの、現実的には依存パッケージごとの粒度が多い。
目的による単位の違い
目的がセキュリティ管理なら、パッケージ単位で十分なことが多い。
一方、目的がライセンス管理なら、1つのパッケージ内で複数ライセンスが混在する場合もあるので、場合によってはファイル単位まで必要となる。
まとめ
SBOMがあればOSSライセンスを極力見落としなくDBとして管理できるので、実務上はSBOM管理ツールを導入し、SBOMをうまく活用することが重要である。
ソフトウェアが社内利用に留まるものであればいざ知らず、外にリリースするものであればライセンス遵守については事前確認するのが当たり前なのだが、これがSBOM管理されていないと、開発部・知財部ともにOSSの洗い出しやライセンスチェックで地獄を見るのではないかと思う。