1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SPDXの取っ掛かりのための記事

Last updated at Posted at 2023-04-23

こんばんは。

SPDXと言うものに触れる機会があったのですが、聞いた時点では食べ物かどうかも分からなかったので調べて軽くまとめました。

SPDXとは

The Software Package Data Exchangeの略語で、直訳すると ソフトウェア パッケージ データ交換 です。
ハァ?

公式ページなどを読んでみたところ、 ライセンスや依存関係について明確に識別するためのフォーマットの一つ と言うことが分かりました。 いかがでしたか?

先日、log4jの脆弱性が発見された際のクソデカ影響範囲はご存じかと思いますが「そもそもウチのプロジェクトは使ってるのか?」と言う調査を行った方もいらっしゃるかもしれません。

で、面倒な手間をかけていると対策にも時間がかかってしゃーないからいい感じに管理しようぜ、
という プロジェクト及びそのフォーマット を指してSPDXと呼ぶそうです。

公式が提供しているツール類を調べてみよう

何はともあれ 公式GitHub
全部で54リポジトリ(除く13Public Archive)ありました。
Starsが多く、今回自分が使う言語であるJavaに関係ありそうなプロジェクトであるtools-javaが見つかったので詳しく見てみます。

中身を見てみよう(tools-java)

GitHub
Maven Repository
Maven Central
※投稿日現在の最新バージョンは v1.1.6

GitHubの説明によると Spdx-Java-Library を使用した SPDX コマンド ライン ツール とのことでした。
まずはMaven Central > 1.1.6 > Dependenciesで依存関係を見てみましょう。

image.png

色々入っていますが、SPDX公式の依存関係だけ抜き出すとこれらを使っているみたいです(GitHubに見つからなかったものはMaven Repositoryのリンク)

tools-javaを使ってみよう

さて、依存関係を確認して満足したので次は実際に動かしてみましょう。
とりあえずGitHubからspdx-examplesと共にcloneします。

$ git clone git@github.com:spdx/tools-java.git
$ git clone git@github.com:spdx/spdx-examples.git

tools-javaはMavenプロジェクトなので、Mavenをインストールして(インストール方法は省略)依存関係を解消します。

$ mvn install
~~~~~~中略~~~~~~
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  59.855 s
[INFO] Finished at: 2023-04-21T00:01:16+09:00
[INFO] ------------------------------------------------------------------------

これでtarget/tools-java-1.1.6-jar-with-dependencies.jarが生成されましたので、実行してみましょう。

$ C:\pleiades\workspace\tools-java\target>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 509C-4ED5 です

 C:\pleiades\workspace\tools-java\target のディレクトリ

2023/04/23  23:56    <DIR>          .
2023/04/23  23:56    <DIR>          ..
2023/04/23  14:55    <DIR>          apidocs
2023/04/23  14:54    <DIR>          classes
2023/04/23  14:55    <DIR>          javadoc-bundle-options
2023/04/23  14:55    <DIR>          maven-archiver
2023/04/23  14:54    <DIR>          maven-status
2023/04/23  14:55    <DIR>          site
2023/04/23  14:55    <DIR>          surefire-reports
2023/04/23  14:54    <DIR>          test-classes
2023/04/23  14:55        53,434,220 tools-java-1.1.6-jar-with-dependencies.jar
2023/04/23  14:55           416,143 tools-java-1.1.6-javadoc.jar
2023/04/23  14:55           120,155 tools-java-1.1.6-sources.jar
2023/04/23  14:55           169,196 tools-java-1.1.6.jar
               4 個のファイル          54,139,714 バイト
              10 個のディレクトリ  236,821,012,480 バイトの空き領域
C:\pleiades\workspace\tools-java\target>
C:\pleiades\workspace\tools-java\target>
C:\pleiades\workspace\tools-java\target>
C:\pleiades\workspace\tools-java\target>java -jar tools-java-1.1.6-jar-with-dependencies.jar Convert ../testResources/SPDXTagExample-v2.3.spdx TagToRDF.rdf
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
C:\pleiades\workspace\tools-java\target>
C:\pleiades\workspace\tools-java\target>
C:\pleiades\workspace\tools-java\target>
C:\pleiades\workspace\tools-java\target>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 509C-4ED5 です

 C:\pleiades\workspace\tools-java\target のディレクトリ

2023/04/24  00:00    <DIR>          .
2023/04/24  00:00    <DIR>          ..
2023/04/23  14:55    <DIR>          apidocs
2023/04/23  14:54    <DIR>          classes
2023/04/23  14:55    <DIR>          javadoc-bundle-options
2023/04/23  14:55    <DIR>          maven-archiver
2023/04/23  14:54    <DIR>          maven-status
2023/04/23  14:55    <DIR>          site
2023/04/23  14:55    <DIR>          surefire-reports
2023/04/24  00:00           344,329 TagToRDF.rdf
2023/04/23  14:54    <DIR>          test-classes
2023/04/23  14:55        53,434,220 tools-java-1.1.6-jar-with-dependencies.jar
2023/04/23  14:55           416,143 tools-java-1.1.6-javadoc.jar
2023/04/23  14:55           120,155 tools-java-1.1.6-sources.jar
2023/04/23  14:55           169,196 tools-java-1.1.6.jar
               5 個のファイル          54,484,043 バイト
              10 個のディレクトリ  236,820,484,096 バイトの空き領域

TagToRDF.rdfが無事作成されましたので比較してみましょう。
左が変換前、右が変換後です。
確かにTag:Value → RDF変換が行われているようですね。
image.png

image.png

README.mdを読む感じConvert以外にもVerifyやSPDXViewerも使えるようですので、時間がある時にまた試してみようと思います。

最後に

ソースコードからSBOMを起こす方法は存在しているのでしょうか。有識者の方からのお知らせをお待ちしております。
SPDX Liteを手作業で作成してツールでSPDX形式に加工、その後必要な部分を手作業で入力する感じ・・・?
と思ったらMicrosoftの提供するReview Toolkitやsbom-toolなるものもあるようです。こちらもいずれ時間作ってやってみようかと。

参考サイト

pdfは直リンクしか見つかりませんでした・・・。

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?