
2025年8月15日に GitHub Actions で「特定のアクションやバージョンをブロックする機能」と「アクションの SHA 固定を強制する機能」がリリースされた💡
たとえば GitHub Actions で使っているアクションにバックドア的な脆弱性が組み込まれてしまった場合のリスクを抑制できる.今年だと tj-actions/changed-files の件があったりした.
個人的に「アクションの SHA 固定を強制する機能 (Enforce SHA pinning)」に興味があってさっそく試してみた❗️今回はサンプルとして actions/checkout を使う.
👾 .github/workflows/deploy.yml(バージョン固定)
まずは Enforce SHA pinning を有効化せずに actions/checkout@v5.0.0(バージョン固定)を指定すると問題なく実行できる👌
name: sandbox-github-actions-sha-pinning on: workflow_dispatch: push: branches: - main pull_request: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5.0.0 - name: Run deployment run: echo 'Start deployment🚀'
Enforce SHA pinning を有効化する
ちなみに Enforce SHA pinning は「リポジトリレベル」と「Organization レベル」で設定できる.今回はリポジトリレベルで設定する.もし仕事で Enforce SHA pinning を有効化するときに最初から Organization レベルで設定してしまうと既存リポジトリへの影響が大きそうではある💨


Enforce SHA pinning を有効化して実行する
次に Enforce SHA pinning を有効化して実行すると actions/checkout@v5.0.0(バージョン固定)では以下のエラーになった🚨
Error: The action actions/checkout@v5.0.0 is not allowed in kakakakakku/sandbox-github-actions-sha-pinning because all actions must be pinned to a full-length commit SHA.

👾 .github/workflows/deploy.yml(SHA 固定)
今度は actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8(SHA 固定)を指定する✅️
name: sandbox-github-actions-sha-pinning on: workflow_dispatch: push: branches: - main pull_request: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 - name: Run deployment run: echo 'Start deployment🚀'
すると今度は実行できた❗️

まとめ
2025年8月15日にリリースされた GitHub Actions の「アクションの SHA 固定を強制する機能 (Enforce SHA pinning)」を試してみた👌
今回はシンプルなワークフローで試したので,普段使っているもっと複雑なワークフローにも適用してみようと思う.