本文へスキップ
MameTechNews
バックエンド

GitHub Actions、cache-modeでキャッシュ権限をジョブ単位に制限

## POINTS

  • 未設定なら従来の安全な既定のまま。低信頼イベントはread、pushなどはwriteが既定
  • 再利用ワークフローは呼び出し元より広いキャッシュ権限を受け取れない。権限の膨張をサービス側で止める
  • pull_request_targetへwriteを明示すると汚染リスクが上がり、警告アノテーションが付く

GitHubは9月10日、GitHub Actionsのキャッシュへ最小権限を付けるcache-modeを、github.comの全プランで一般提供した。ワークフローまたはジョブ単位で、復元のみのread、復元と保存のwrite、保存のみのwrite-only、完全遮断のnoneを選べる。ジョブ設定がワークフロー設定より優先される。

目的は、使わない復元や保存を止め、信頼できるワークフローをキャッシュ汚染から守ることだ。低信頼イベントのpull_request_targetでは既定がread、pushなど信頼イベントでは既定がwrite。再利用ワークフローでは、呼び出された側が呼び出し元より広いキャッシュ権限を受け取れない。設定しないワークフローは従来の安全な既定のまま動く。

注意点は、明示したcache-modeが低信頼イベントの読み取り専用既定を上書きすることだ。pull_request_targetにwriteやwrite-onlyを書くと汚染リスクが上がり、GitHub Actionsは警告アノテーションを付ける。フォークPRがキャッシュを読むジョブと、本体ブランチだけがキャッシュを書くジョブを分け、書き込みを信頼イベントに閉じる構成が基本になる。