見出し画像

TWSNMP FCの公式SBOMを作成してみた

今朝は4時半から開発開始です。
昨日、ウッドデッキの補修を手伝ってノコギリとカンナで運動したのでスッキリ起きられました。
さて、G7サミットも終わりましたが、ソフトウェアサプライチェーンの透明性が重要な時代とのことでTWSNMP FCについても対応してみようと思いました。
ソフトウェアデザインの5月号

から始まった記事でSBOMというのがあることを知りました。
SBOMについて最近流行りのAI(ChatGPTではなくGoogle Bardですが)に「SBOMとはなんですか?」と聞いてみました。
答えは、

SBOM(Software Bill of Materials)は、ソフトウェアシステムを構成するコンポーネント、その依存関係、およびライセンス情報を一覧にしたものです。SBOMは、ソフトウェアシステムのセキュリティを評価し、脆弱性を特定し、リスクを管理するために使用できます。また、ソフトウェアシステムの構成を追跡し、ソフトウェアサプライチェーンの透明性を確保するためにも使用できます。

SBOMは、ソフトウェアシステムの開発、構築、および運用のすべての段階で作成および維持できます。SBOMは、静的分析ツール、動的分析ツール、または人間によって作成できます。

SBOMには、次の情報が含まれる場合があります。

 ソフトウェアコンポーネントの名前とバージョン
 ソフトウェアコンポーネントの依存関係
 ソフトウェアコンポーネントのライセンス情報
 ソフトウェアコンポーネントのセキュリティ脆弱性

SBOMは、ソフトウェアシステムのセキュリティを向上させるための強力なツールです。SBOMを使用して、ソフトウェアシステムの脆弱性を特定し、リスクを管理し、ソフトウェアサプライチェーンの透明性を確保できます。

Google Bard

でした。わかりやすい。

SBOMが何かわかったところで、TWSNMP FCのSBOMを作ってみることにしました。
ソフトウェアデザインの記事ではMicrosoftのsbom-tool

を紹介していました。これを試そうと思っていたのですが、インストールが面倒そうなので、他に無いか探してみました。
いつものようにGoogleさんに聞いて

を見つけました。この人によると”CycloneDX ネイティブ プラグイン”がよいらしいですが、導入が難しい。syftが無料でおすすめとのことなので、

 を試してみることにしました。
GitHUBを見ると私の好きなGO言語で作られています。期待できます。
インストールも簡単でした。Mac OSなら

brew install syft

でインストールできました。
dockerイメージだと

syft twsnmp/twsnmpfc

 でリストが出力されます。

コンテナのベースのAlpine LinuxをGO言語のモジュールが主にリストアップされます。dockerにもsbomコマンドがありました。
中身が、このsyftでした。


ソースコードのあるディレクトリを

syft ~/prj/twsnmp/twsnmpfc

のようにスキャンするとnpmでインストールしたモジュールもリストアップされます。
出力する形式を指定することもできます。ソフトウェアデザインで解説されていたcyclonedxとSPDXにも対応しています。

syft -o  cyclonedx-json=twsnmpfc_cyclonedx.json   -o spdx-json=twsnmpfc_spdx.json -o  syft-table=twsnmpfc_table.txt ~/prj/twsnmp/twsnmpfc

のようにすれば、一発で複数の形式を出力できます。
これがTWSNMP FCの公式SBOMです。

明日に続く


開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。