はじめに
Goプロジェクトのセキュリティを確保するために、定期的な脆弱性診断は必須ですよね。
Goの脆弱性診断を定期実行する仕組みを構築すれば、開発スピードを落とすことなくセキュリティ対策を強化できます。
今回は、govulncheck-actionを使って、Goの脆弱性診断を継続的に実行する方法について紹介します。
GitHub Actionsのワークフロー作成
以下のyamlを.github/workflows配下に追加します。
name: Go Vulnerability Check
on:
# ここで定期実行のための設定をしています
schedule:
- cron: '0 23 * * *' # UTC表記。毎日8時(JST)に実行
jobs:
go_vulncheck:
runs-on: ubuntu-20.04
timeout-minutes: 10
steps:
# リポジトリのコードを取得し、アクションが実行される環境にコピーする
- uses: actions/checkout@v4
# Goの脆弱性診断を実行
- uses: golang/govulncheck-action@v1
go-version-input: ◯◯◯
work-dir: ◯◯◯
go-package: ./...
たったこれだけで、Goの脆弱性診断を定期実行するための仕組みは整いました。
お手軽ですね。
おまけ
govulncheck-actionの導入を一度挫折した話
実は、一度govulncheck-actionの導入を挫折してました。
govulncheck-action v1.0.0のリリース時は、working directoryの設定オプションがありませんでした。
これはmonorepo環境だとちょっとつらくて、working directoryの設定がうまくいかなかったため、一度govulncheck-actionの導入は見送ってました。
試行錯誤したこと
working-directoryをdefaultsで設定する(ボツ)
defaults:
run:
working-directory: ◯◯◯
を設定しても、
- uses: golang/govulncheck-action@v1
のstepでは無視されてしまい、GOPATHの環境変数が変更されないためgo.modファイルが見つけれないというエラーが出てました。
同様のエラーでハマって、issueを起票していた方がいたので、詳しくはそちらを参照ください。
v1.0.1でworking-directoryが設定できるようになってました🎉
v1.0.1でこの問題が解決されました。(最近知りました😇)
v1.0.1ではいった、working-directoryが設定できる差分
引用: https://go-review.googlesource.com/c/govulncheck-action/+/520175
これによって、working-directoryの問題が解決され、めでたくgovulncheck-actionを導入できました🎉