概要

Kubernetes プロジェクトの新しい GitHub Actions セキュリティポリシーがエンタープライズレベルで施行されるようになりました。タグ・ブランチ・latest などの「ミュータブル(変更可能)」なアクション参照を使用するワークフローは失敗します。メンテナーはアクションを完全な40文字のコミット SHA にピン留めする必要があります。


背景・前提知識

GitHub Actions とは? GitHub が提供する CI/CD(継続的インテグレーション/継続的デリバリー)サービスです。コードのプッシュやPRをトリガーに、テスト・ビルド・デプロイなどの自動化ワークフローを実行できます。

ミュータブルな参照とは? GitHub Actions のワークフローで外部アクションを使う際、そのアクションのバージョンをどう指定するかという問題です。

# ミュータブルな参照(危険)
- uses: actions/checkout@v4          # タグ
- uses: actions/checkout@main        # ブランチ
- uses: actions/checkout@latest      # latest

タグやブランチは後から別のコミットを指すように変更できます。つまり、攻撃者がアクションのリポジトリを乗っ取った場合、既存タグを書き換えることで悪意あるコードを注入できます(サプライチェーン攻撃)。

コミット SHA ピン留めとは? Git のコミットハッシュ(SHA)は変更不可能な一意の識別子です。完全な40文字のSHAを指定することで、常に同じコードが実行されることを保証できます。

# 安全な参照(コミット SHA ピン留め)
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v4.2.2

詳細

Kubernetes プロジェクトはGitHub Organizationレベルのエンタープライズポリシーとしてこのルールを施行しています。これにより、個々のリポジトリやワークフローが意図的・非意図的にこのルールを回避することができなくなります。

影響を受けるケース:

  • @v1@v2 などのタグ参照
  • @main@master などのブランチ参照
  • @latest 参照

対応方法:

# 変更前
- uses: actions/setup-go@v5
 
# 変更後(コメントで人間が読めるバージョンを記載)
- uses: actions/setup-go@d60b41a563a30e7f8d3b445da51da8cd6f5d4c10  # v5.5.0

ピン留め用のツールとして DependabotMinder などが利用できます。


既存ユーザへの影響

Kubernetes コントリビューター・メンテナー:

  • 自分が管理するリポジトリのワークフローを確認し、ミュータブル参照をSHAに置き換える必要があります
  • ポリシー施行後は対応していないワークフローがCIで失敗します

一般の Kubernetes エコシステム開発者:

  • これはKubernetesプロジェクト自体の内部ポリシーであり、一般ユーザーのクラスター運用には直接影響しません
  • ただし、同様のベストプラクティスを自社のGitHub Actionsにも適用することが推奨されます

参考リンク