記事検索

検索ワードを入力してください。
Sky Tech Blog
SBOMの​生成ツールを​試してみる

SBOMの​生成ツールを​試してみる

サプライチェーン攻撃対策として注目されるSBOM(ソフトウェア部品表)について、Microsoft社の「sbom-tool」を用いた生成手順と結果を解説します。C#プロジェクトでの実行例やライセンス情報を出力するための引数設定などを客観的に紹介します。

サプライチェーン攻撃についての記事を目にすることが最近増えていることもあり、 SBOMが以前よりも着目されているかと思います。
今回は、実際にSBOM生成を試してみました。

SBOMとは

SBOM(ソフトウェア部品表)は、ソフトウェアを構成するすべてのコンポーネントを一覧化した目録です。
これにより、ソフトウェアに脆弱性が見つかった際に影響範囲を迅速に特定でき、セキュリティリスクの低減につながります。

用意する​もの

  • sbom-tool
    Microsoft社のフリーSBOMツールを用意しました
  • C#のコンソールアプリ
    • ソリューションとプロジェクトファイルは同じディレクトリに配置
    • スケルトンコードのまま
    • nugetで取り込むOSSは、System.Security.Permissions
    • .NET8

試した​結果

ビルドする

今回はこのようなbatでビルドしました

@echo off
cd /d %~dp0
dotnet publish .<ソリューション名>.sln -r win-x64 -c "Release" --self-contained true

sbom-toolを​実行する

ヘルプを見る限り、この辺りが生成に必要そうですので、指定しました。

  • -b でビルド成果物のディレクトリを指定
  • -bc でソースの場所を指定
sbom generate^
 -b ".\bin\Release\net8.0\win-x64\publish"^
 -bc "."^
 -ps "Sky Co., LTD."^
 -pn "SbomTest"^
 -pv "1.0.0.0"

生成された​SBOMを​確認する

_manifest\spdx_2.2 というディレクトリができており、manifest.spdx.json がありました。
自己完結型アプリケーションとしてビルドしたので、3000行以上ある大きなファイルですが、 エディタで開いて "System.Security.Permissions" を検索すると下記が見つかります。

"name": "System.Security.Permissions",
"licenseConcluded": "NOASSERTION",
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",

しかし、NOASSERTION = 未定義 となっている箇所を、もう少し埋めたいところですので、 再度引数を見直して試してみました。

引数を​変更して​再度実行

末尾に2つの引数を追加して実行すると、"MIT" と入っておりました。
すべての項目を埋めることは難しいのでしょうが、指定なしの時よりも情報が埋まりました。

-li true
-pm true
"name": "System.Security.Permissions",
"licenseConcluded": "MIT",
"licenseDeclared": "MIT",
"copyrightText": "NOASSERTION",

所感

今回C#のスケルトンコードのみのプロジェクトで、SBOMを作りましたがファイルは思ったよりも大きくなりました。
実運用時には表形式に成形する
ソフトを使って内容を確認した方が把握しやすいことを実感できました。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム