parlayでSBOMの出力結果に脆弱性情報を出力してみた

parlayでSBOMの出力結果に脆弱性情報を出力してみた

えすぼむぼむぷりん૮⁔- ̫ -⁔ა
2025.10.12

おはようございます。
ゲームソリューション部のきだぱんです。
今回は、SBOMを、さらに情報で豊かにしてくれるSnykのオープンソースツール「parlay」を試してみたいと思います。
https://github.com/snyk/parlay

SBOMとは

こちらの記事に詳しく書かれています。
https://dev.classmethod.jp/articles/sbom-beginner-kdpn/

Snyk CLIとparlayのインストール

まずはじめに、必要なツールをインストールします。
※今回は、macOSで行なっていきます。

parlayはSnykの脆弱性情報を付与する機能があるため、先にSnykのコマンドラインツール(CLI)をインストールしておきましょう。

			
			brew install snyk

		

次に、parlayをインストールします。

			
			brew install parlay

		
  • バイナリファイルをダウンロードする場合
    GitHubリポジトリから、お使いのOS(Windows, macOS, Linuxなど)に合った実行ファイルをダウンロードしてパスの通った場所に配置します。

https://github.com/snyk/parlay

Snykとの連携設定

parlayがSnykの脆弱性情報を利用できるように、Snykアカウントと連携させる必要があります。

まずはSnyk CLIをSnykアカウントに接続します。以下のコマンドを実行すると、ブラウザが起動して認証を求められます。

			
			snyk auth

		

APIトークンの取得
Snykのアカウント設定ページにアクセスします。
Auth TokenのセクションにあるKEYをコピーします。

コピーしたAPIトークンを、SNYK_TOKENという環境変数に設定します。

			
			# "ここに取得したAPIトークンを貼り付け"の部分を書き換えて実行してください
export SNYK_TOKEN="ここに取得したAPIトークンを貼り付け"

		

parlayを使ってみる

Snyk CLIでSBOMをCycloneDX形式(JSON)で生成します。

			
			# --formatで形式を指定し、>でファイルに出力します
snyk sbom --format=cyclonedx1.4+json > sbom test.json

		

プロジェクトの依存関係が記述されたsbom test.jsonファイルが作成されました。
この時点では、パッケージ名やバージョンといった基本的な情報しか含まれていません。

			
			# 出力結果
   {
      "name": "snapdragon",
      "SPDXID": "SPDXRef-60-snapdragon-0.8.2",
      "versionInfo": "0.8.2",
      "supplier": "NOASSERTION",
      "downloadLocation": "NOASSERTION",
      "filesAnalyzed": false,
      "licenseConcluded": "MIT",
      "licenseDeclared": "NOASSERTION",
      "copyrightText": "NOASSERTION",
      "externalRefs": [
        {
          "referenceCategory": "PACKAGE-MANAGER",
          "referenceType": "purl",
          "referenceLocator": "pkg:npm/snapdragon@0.8.2"
        }
      ]
    },
...

		

いよいよparlayの出番です!
Snykの脆弱性情報を付与してみます。

			
			parlay snyk enrich sbom-test.json > snyk-enriched-test.json

		
			
			# 出力結果
   {
      "name": "snapdragon",
      "SPDXID": "SPDXRef-60-snapdragon-0.8.2",
      "versionInfo": "0.8.2",
      # 省略

      "downloadLocation": "NOASSERTION",
    },
"vulnerabilities": [
  {
    "bom-ref": "",
    "id": "SNYK-JS-SUBTEXT-81359",
    "ratings": [
      {
        "source": {
          "name": "Snyk",
          "url": "https://security.snyk.io"
        },
        "score": 5.6,
        "severity": "high",
        "method": "CVSSv78",
        "vector": "CVSS:3.4/AV:N..."
      }
    ],
    "cwes": [
      400
    ],


		

vulnerabilitiesという項目が追加され、各パッケージに存在する脆弱性の情報(深刻度や詳細へのリンクなど)が記載されていることがわかります。

まとめ

parlayを使えば最小限の情報しか持たないSBOMが、ライセンスや脆弱性情報を含むようになります。
SBOMは作成するだけでなく、そこに書かれた情報を基に「このライセンスは使って良いのか?」「深刻な脆弱性はないか?」といった意思決定に活用することが重要です。

Snykに関するブログも沢山展開されていますので、是非こちらもご覧ください。
https://dev.classmethod.jp/tags/snyk/

この記事がどなたかのお役に立てば幸いです。
以上、きだぱんでした。

この記事をシェアする

FacebookHatena blogX

関連記事

parlayでSBOMの出力結果に脆弱性情報を出力してみた | DevelopersIO