はじめに
業務で脆弱性管理を行うにあたり、SBOMファイルに触れる機会があったっため、Syftを使用したSBOMファイルの生成方法について簡単に記載してみます。
1. SBOMとは何か?
SBOMとは、Software Bill of Materialsの略で、日本語で言えば「ソフトウェア部品表」と称されます。
ソフトウェアを構成するすべての部品がリストアップされており、各部品の「名前」や「バージョン」「ライセンス情報」など、ソフトウェアを構成する情報が記載されています。
2. SBOMの目的
SBOMファイルを作成する目的は、ソフトウェアを構成する部品を可視化して管理できることにあります。
利用しているOSSや外部コンポーネントを一覧化することで、脆弱性情報と照合しやすくなり、セキュリティ対応を迅速に行うことが可能です。
また、インシデント発生時には影響範囲を素早く特定する助けにもなりえます。
3. SBOM生成
以前私が個人開発として作成したアプリに対し、Syftを用いてSBOMファイルを生成してみます。
※個人開発の記事はこちら:【個人開発】Webアプリ制作 Part2
手元の環境と、使用するバージョンは以下の通りです。
OS:Windows-64bit
Syft:1.32
SBOMファイル形式:CycloneDX形式
Syftのインストール
-
SyftのGithubにおけるリリースページから、該当OSの最新バージョンをクリックし、ダウンロードする
- リリースページ:https://github.com/anchore/syft/releases
syft_1.32.0_darwin_amd64.tar.gz
- リリースページ:https://github.com/anchore/syft/releases
-
[1.]でダウンロードしたファイルを解凍
- 任意のパスを指定し、ファイルを展開する
- 参考例:
C:\Users\<ユーザー名>\syft
-
PATHを通す
- 環境変数を開き[PATH]にsyft.exeを用いたファルダを追加
- 参考例
C:\Users\<ユーザー名>\syft
-
動作確認
- PowerShellを開き、下記コマンドを実行します
syft --version
- バージョン番号が表示されていればインストール成功です
syft --version # syft 1.32.0
- PowerShellを開き、下記コマンドを実行します
SBOMファイルの生成
今回はCycloneDX形式で生成してみます。
-
対象プロジェクトのカレントディレクトリへ遷移
cd "<対象プロジェクトのディレクトリパス>"
-
Syftコマンドの実行
syft dir:. --output cyclonedx-json > syft-sbom.json
実行したところ、下記の通りとなりました。
├── ✔ Packages [220 packages] ├── ✔ Executables [0 executables] ├── ✔ File metadata [0 locations] └── ✔ File digests [0 files]
ディレクトリ内では220個のパッケージが検出できました。
出力されたSBOMファイルは、整形を行うと何万行にも膨れ上がるため、今回は一部について抜粋し記載します。
各記載の意味については、CycloneDX公式に記載がされています。
https://cyclonedx.org/docs/1.6/json/{ "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json", "bomFormat": "CycloneDX", "specVersion": "1.6", "serialNumber": "urn:uuid:c8497e97-4b18-445f-b416-ccf73572d9b9", "version": 1, "metadata": { "timestamp": "2025-08-27T23:57:12+09:00", "tools": { "components": [ { "type": "application", "author": "anchore", "name": "syft", "version": "1.32.0" } ] }, "component": { "bom-ref": "af63bd4c8601b7f1", "type": "file", "name": "." } }
4. 終わりに
今回はSyftを用いてSBOMファイルの生成を行いました。
記事にある通りSyftを用いることで、簡単にプロジェクトの依存関係やライブラリ情報を簡単に可視化することができます。
皆さんもお手元の環境にてSyftを用いてSBOMファイルを作成し、コードやライブラリ構成を可視化してみてはいかがでしょうか。
参考
https://github.com/anchore/syft/
https://cyclonedx.org/docs/1.6/json/