🔐

【セキュリティ対策】GitHub Actionsのアクションをハッシュ固定しつつDependabotで自動更新する

に公開1

事の始まり

前回カンファレンスのレポートを投稿しました。
https://zenn.dev/dogfortune/articles/da37be2be688ef

ここでのセッションで多くの登壇者が言われていたのがセキュリティで、個人的にも一番手軽にできる対策だと思ったのが、「Github Actionsのアクションをコミットハッシュで指定する」でした。自分でも小さなリポジトリをOSSで公開していて、かつGitHub Actionsも使っていたので、他人事だと思わず自分も対策する事にしました。「誰も使ってないし」とか「小さいリポジトリだし」と思うのは危険です。そういったリポジトリほど狙われますし、そこを土台に別のリポジトリへの攻撃に繋がる事もあります。きちんと対策しましょう。

アクションの指定をバージョンからコミットハッシュに

https://github.com/DogFortune/blank-file-folder-dataset/pull/26/changes#diff-cdb9858a1b8a7b1e4fe5a819a81e7aa907d5fd8cd7e42947997c8b0f9e77e975

こちらのPRで変更しました。タグの取得方法としてはGitHub CLIを使うと簡単です。


gh api repos/actions/checkout/git/ref/tags/v6.0.2 | jq -r .object.sha        
de0fac2e4500dabe0009e67214ff5f5447ce83dd

こんな感じで取得できるので書き換えていきます。

ただハッシュで指定してしまうとアクションの更新があった時に手動になってしまいます。そこで出てくるのがDependabotです。

Dependabotで自動更新

Dependabotといえばパッケージの依存関係チェックですが、Github Actions自体もチェックしてくれます。私もこれをするまではnpmとかpipだけだと思っていました。
https://docs.github.com/en/code-security/reference/supply-chain-security/supported-ecosystems-and-repositories

設定のサンプルは以下になります。
https://docs.github.com/en/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/keeping-your-actions-up-to-date-with-dependabot#example-dependabotyml-file-for-github-actions

これを使うと使用しているアクションの更新があればPRを作成してくれますので、これでハッシュ固定にしてセキュリティを確立しつつ自動更新もできるという最高の状態になります。

セキュリティを維持しつつ良い開発ライフを!!

Discussion

rakiraki

ハッシュによるピン留めなら pinact が楽です。
dependabot を設定するなら cooldown と groups は設定したほうが幸せになれるでしょう。