SBOMツール紹介 ~ FOSSology編 ~

【6/19開催】Kong Community Japan Meetup #4
本イベントでは、Kong Inc. のVP of ProductであるReza Shafii氏もプレゼンターとして参加。当社からはアーキテクト マネージャーの槌野の登壇が決定!参加無料です!!

【6/21開催】開発者目線でのSBOMとの向き合い方
SBOMの導入から開発者がSBOMの作成・管理を自動で行っていくための方法(デモ)を紹介します。

【7/5開催】azd+Terraform? ~ポイントを押えてAzure上へのアプリケーション環境をラクチン構築~
ツールの概要説明から、実際の開発におけるポイントをお伝えします!

【7/19開催】現場で役立つAzure神小技10+α 〜生成AI,RAG,コスト削減など旬な技術満載のLT大会〜
Azureの最新技術や実用的な小技を紹介する特別なライトニングトーク大会を開催します!

【7/26開催】最適なIaCツールを選ぼう
プロジェクトでのツール選びに困らないための重要な観点をご説明します!

はじめに

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

こんな感じです。

関連記事

アバター画像
About 藤井 10 Articles
2020年サイオステクノロジーに入社。入社後は主にgo言語とtypescriptを使ったAPI開発を行う。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる