ソフトウェア部品表(SBOM)を生成するツール
Go コードのビルドとリリースを一度にやってくれる GoReleaser というツールがあるのだが,これの最近のバージョンはソフトウェア部品表(Software Bill of Materials; SBOM)も生成・リリースできるらしい。 というわけで,自作ツールでちょっと試してみた。
設定自体は難しくなく .goreleaser.yaml
ファイルに以下の記述を追加すればいいだけのようだ。
sboms:
- artifacts: archive
早速この記述を追加して手元で動かしてみたのだが…
• cataloging artifacts
• cataloging artifact=dist/ml_SNAPSHOT-a83f2d0b1db0ade89d839cd70b6870cd90011f55_Windows_ARM64.zip cmd=syft sboms=ml_SNAPSHOT-a83f2d0b1db0ade89d839cd70b6870cd90011f55_Windows_ARM64.zip.sbom
⨯ release failed after 1s error=cataloging artifacts: syft failed: exec: "syft": executable file not found in $PATH:
ふむむ? syft
がないって言ってるのか? 調べてみたら syft というのはこれのことらしい。
GoReleaser は内部で syft を起動して SBOM を生成しているようだ。
SBOM を生成するための設定を .goreleaser.yaml
ファイルに記述する際の詳細情報は以下のページが参考になる。
つか,最初からマニュアルを読めっての!>自分
GitHub Actions の goreleaser-action を使って SBOM を含むリリースを行う場合は,自前で syft をインストールする必要がある。 とはいえ goreleaser-action を使うなら Go のコンパイラは事前に導入されているはずなので,簡単に
name: build
on:
push:
tags:
- v*
permissions:
contents: write
jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
-
name: Set up Go
uses: actions/setup-go@v3
with:
go-version-file: 'go.mod'
-
name: install syft
run: go install github.com/anchore/syft/cmd/syft@latest
-
name: Run GoReleaser
uses: goreleaser/goreleaser-action@v4
with:
# either 'goreleaser' (default) or 'goreleaser-pro'
distribution: goreleaser
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Your GoReleaser Pro key, if you are using the 'goreleaser-pro' distribution
# GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
といった感じに go install
コマンドでインストールしてしまっても問題なく行けるっぽい。
でも,これをすると SBOM に syft のバージョンが入らなくなるんだよなぁ。
sbom-action と組み合わせればいいのだろうか。
要検証だな。
syft は Go 製だが Go エコシステム専用というわけではなく,以下のものに対応しているらしい。
んー。 メジャーどころは網羅してる感じ?
他にも grype と組み合わせることで脆弱性のチェックとかもできるし,その結果を証明書として作成して発行することもできるそうな。 私が公開しているような小物パッケージではそこまで不要だろうが,企業とかが運用している,それなりに規模の大きなプロジェクトでは重宝するかもしれない。
覚えておこう。
ブックマーク
参考図書
- セキュリティはなぜやぶられたのか
- ブルース・シュナイアー (著), 井口 耕二 (翻訳)
- 日経BP 2007-02-15
- 単行本
- 4822283100 (ASIN), 9784822283100 (EAN), 4822283100 (ISBN)
- 評価
原書のタイトルが “Beyond Fear: Thinking Sensibly About Security in an Uncertain World” なのに対して日本語タイトルがどうしようもなくヘボいが中身は名著。とりあえず読んどきなはれ。ゼロ年代当時 9.11 およびその後の米国のセキュリティ政策と深く関連している内容なので,そのへんを加味して読むとよい。
- プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
- 丸善出版 2016-06-20
- 単行本(ソフトカバー)
- 4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
- 評価
著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。
- デベロッパーゴースーパーゴラン Tシャツ
- Geek Go Super Golang Tees
- ウェア&シューズ
- B09C2XBC2F (ASIN)
- 評価
ついカッとなってポチった。反省はしない