LoginSignup
4
1

spdx-toolsでSPDX形式のJSONファイルを表示する

Last updated at Posted at 2023-06-11

はじめに

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ファイルに対し簡単な操作であれば行うことができます。
今回は紹介しませんでしたが、ライブラリとして使えば、値を取り出したり、検証したり、ファイル出力することもできます。

参考情報

4
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1