SBOMツール紹介 ~ FOSSology編 ~

はじめに

こんにちは、サイオステクノロジーの藤井です。経産省が策定した「ソフトウェア管理に向けたSBOMの導入に関する手引」という資料の中で紹介されているFOSSologyというSBOMツールについて調査したので、この記事では、その使い方や特徴について解説しています。

SBOMとは

SBOMとは、ソフトウェア部品表(Software Bill of Materials)、つまり、ソフトウェアコンポーネントやそれらの依存関係の情報などの一覧のことです。

詳しくは、SBOM解説記事を参考にしてみてください。

FOSSologyとは

SBOM解説記事内でも紹介した、経産省の「ソフトウェア管理に向けたSBOMの導入に関する手引」の中では、以下の様に紹介されています。

開発元:Linux Foundation

  • OSS の名称やバージョンの特定はできないものの、対象ソフトウェアに含まれるコンポーネントのライセンス及び著作権を検出し、管理することが可能
  • Web UI を用いたインポートや解析が可能

また、公式サイトGitHubでは、要約すると以下の様な特徴が挙げられています。

  • FOSSologyは、ライセンスや著作権などのスキャンが出来るOSSです。
  • システムとしては、データベース+Web UI の構成です。
  • ワンクリックで、ソフトウェアのすべての著作権表示を含む SPDX ファイルまたは ReadMe を生成できます。

FOSSologyの導入手順

https://fossology.osuosl.org/ にテストサーバーが立っているので、ちょっと試したいときにはここで出来ます。(毎日データが初期化されます。)

外部に公開したくないコードのスキャンをする場合などは、ローカルにサーバーを構築する必要があります。

インストール

今回は、wsl2でubuntu-22.04を動かし、そこにインストールしました。

wsl2やubuntu-22.04をインストールする手順については、省略します。

公式のインストール手順解説動画があります。(https://www.youtube.com/watch?v=q12KwmPYZG4)
情報が古いところが有り、現在とコマンドが異なったりするので、基本的にはwikiのコマンドに従う必要がありますが、どのコマンドにsudoが要るかとか、どんなログが出るか、など適宜参考にすると良いと思います。

cloneしてインストール

git clone https://github.com/fossology/fossology.git
cd fossology/
sudo apt-get update
sudo apt install lsb-release
sudo ./utils/fo-installdeps --everything 

ビルド

cmake -S. -B./build -G Ninja
cmake --build ./build --parallel
sudo cmake --install ./build

fossyユーザーを作成し、DBをセットアップする

sudo /usr/local/lib/fossology/fo-postinstall

http://localhost/repo/ にアクセス

Username:fossy、password:fossyでログイン

スケジューラーの設定

sudo systemctl enable --now fossology
sudo systemctl start fossology

PHPの設定

sudo ./install/scripts/php-conf-fix.sh --overwrite

コードのアップロード

上部メニューのupload > from fileから Upload a New File 画面を開く

ファイルを選択し、分析内容を選んでuploadを押す

SBOMの生成

上部メニューのBrowseからディレクトリを開く

CycloneDX generationボタンでCycloneDXのjsonファイルが、SPDX2 generationボタンでspdxのrdfファイルが生成できます。この例では、CycloneDX形式で出力してみます。
CycloneDXやSPDXについて、詳しくはこちらの記事をご覧ください。


この様に、ファイルごとのライセンスとcopylightの情報を含んだSBOMを生成することが出来ました。

SBOM生成以外の機能

READMEの生成

ReadME_OSS generationボタンで出来ます。Copyrightが羅列されたtxtファイルが作成されました。

ライセンス管理機能

各フォルダを開くと、その中のフォルダやファイルにどんなライセンスのファイルがあるかを確認できます。

また、それぞれのライセンスのファイルが、全体で何個あるのかも確認できます。

個別のファイルを開くと、そのファイルの内容と、そのライセンスが表示されます。自動検出が間違っていた場合は、ここから、削除や編集ができます。

Copyright

このソフトウェアに含まれるcopylightの一覧を表示できます。

各項目を選択するとどのファイルにそれぞれのcopylightが記載されているか確認することが出来ます。

API

参考

APIからFOSSologyを操作することもできます。CI/CDなどに組み込む場合に活用できそうです。

まずは、上部メニューのAdmin > Users > Edit User Accountから tokenを取得します。

このtokenをHeaderに`Authorization:Bearer `の形で指定することで、各種操作を行うことが出来ます。

例えば、GET http://localhost/repo/api/v1/foldersで、フォルダーの一覧を取得できます。

利用できるAPIのドキュメントは、openapi定義yamlの形でgithub上にあるので、これをswaggerエディター等で読み込むことで、確認できます。

まとめ

今回は、FOSSologyの特にSBOMツールとしての側面について解説しました。

まとめると、

  • メイン機能は、コードをスキャンしてライセンスと著作権を自動検出
  • CycloneDXかSPDX形式のSBOMを生成可能
  • 全部GUIで操作可能+テストサーバー有で、試すハードルは低め

こんな感じです。

関連記事

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です