GitHubではパブリックリポジトリや、自分がアサインされているプライベートリポジトリでSBOMがエクスポートできます。
Insights > Dependency graph > Export SBOM の順に進んでいくとJSONファイルでダウンロードできます。
この機能をgh CLIから実現する拡張機能が公開されていました。
セットアップ
gh CLIがインストールされていない方はこちらを参考にインストールしてください。
gh CLIがインストールできたらgh-sbomをインストールします。
gh ext install advanced-security/gh-sbom
使ってみる
チェックできるようにデモリポジトリを用意しました。
SBOMを取得してみます。
gh sbom -r vtj-ttanaka/export-sbom-demo
-r
オプションでデモのリポジトリを指定しています。-r
を指定しない場合は、クローンしたリポジトリに移動してgh sbom
を実行してください。
SPDXフォーマットのSBOMが出力されます。1行のJSONで出力されるので、見づらい場合はjqなどで整形するとよさそうです。
gh sbom -r vtj-ttanaka/export-sbom-demo | jq
CycloneDXフォーマットでSBOMを取得したい場合は-c
をつけます。
gh sbom -c -r vtj-ttanaka/export-sbom-demo | jq
SPDXにはライセンス情報が常に含まれていますが、CycloneDXにはライセンス情報が含まれていません。ライセンス情報が必要であれば-l
オプションをつけてください。
gh sbom -c -l -r vtj-ttanaka/export-sbom-demo | jq
少し時間がかかるかもしれないので気長に待ってみてください。
まとめ
gh CLIで取得できるのは楽ですね。わざわざブラウザを起動してリポジトリからリンクを辿ってExport SBOMをポチらなくてもリポジトリさえわかっていればSBOMが取得できます。ただ、InsightsにはSBOM以外にも色々な情報がみられるので、たまにはブラウザからみてみるのもおもしろいかもしれません。