はじめに
spdx-toolsを使うことでSPDX形式のJSONファイルを解析して表示することができます。
spdx-toolsの使い方に関する記事がQiitaになさそうだったので、本記事を執筆することに決めました。
環境情報
コンポーネント | バージョン | 備考 |
---|---|---|
PC | M1 MacBook Pro | |
OS | macOS Ventura 13.4 | |
Docker | 4.20.0 | |
Rocky Linux | 9.2 | |
syft | v0.82.0 | |
spdx-tools | 0.7.1 | python 3.7以降が必要 |
SPDX形式のJSONファイルの準備
SPDX形式のJSONファイルの準備をします。
下記の記事に従って、Rocky Linux 9のDockerコンテナを作成し、syftを使ってRocky Linux 9のSPDX形式のJSONファイルを生成します。
NTIA Conformance CheckerでSPDX形式のJSONファイルがNTIAのSBOMの最小要素を満たすか調べる
※Rocky Linux 9のDockerコンテナ環境はそのまま使うので残しておいてください
※今回はNTIA Conformance Checkerは使わないのでインストール不要です
spdx-toolsのインストール
pipをインストールして、最新版に更新しておきます。
# dnf install python3-pip
# python3 -m pip install -U pip
spdx-toolsモジュールをインストールします。
# python3 -m pip install spdx-tools
バージョンを確認します。
# python3 -m pip freeze | grep spdx-tools
spdx-tools==0.7.1
SPDX形式のJSONファイルを表示する
SPDX形式のJSONファイルの内容を表示してみます。
# pyspdxtools_parser --file rockylinux9_rpm.json
(snip)
Package Name: openssl
Package Version: 1:3.0.7-6.el9_2
Package Download Location: NOASSERTION
Package Homepage: None
Package Attribution Text: None
Package verification code: None
Package excluded from verif:
Package license concluded: NOASSERTION
Package license declared: LicenseRef-ASL-2.0
Package licenses from files:
Package Copyright text: NOASSERTION
Package summary: None
Package description: None
Package external references:
Category: SECURITY
Type: cpe23Type
Locator: cpe:2.3:a:rockyenterprisesoftwarefoundation:openssl:1\:3.0.7-6.el9_2:*:*:*:*:*:*:*
Category: SECURITY
Type: cpe23Type
Locator: cpe:2.3:a:openssl:openssl:1\:3.0.7-6.el9_2:*:*:*:*:*:*:*
Category: PACKAGE-MANAGER
Type: purl
Locator: pkg:rpm/openssl@3.0.7-6.el9_2?arch=aarch64&epoch=1&upstream=openssl-3.0.7-6.el9_2.src.rpm
(snip)
spdx-toolsの機能ではないですが、SPDX形式のJSONファイルからパッケージ名を抽出することもできます。
# pyspdxtools_parser --file rockylinux9_rpm.json | grep "Package Name" | sed -e 's/Package Name: //g'
alternatives
audit-libs
basesystem
bash
binutils
binutils-gold
bzip2-libs
ca-certificates
coreutils-single
cracklib
(snip)
最後に
spdx-toolsを使うことで、SPDX形式のJSONファイルに対し簡単な操作であれば行うことができます。
今回は紹介しませんでしたが、ライブラリとして使えば、値を取り出したり、検証したり、ファイル出力することもできます。
参考情報
- spdx-tools
- tools-python
- NTIA Conformance CheckerでSPDX形式のJSONファイルがNTIAのSBOMの最小要素を満たすか調べる