はじめに
こんにちは、サイオステクノロジーの藤井です。経産省が策定した「ソフトウェア管理に向けた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で操作可能+テストサーバー有で、試すハードルは低め
こんな感じです。