概要
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ピン留め用のツールとして Dependabot や Minder などが利用できます。
既存ユーザへの影響
Kubernetes コントリビューター・メンテナー:
- 自分が管理するリポジトリのワークフローを確認し、ミュータブル参照をSHAに置き換える必要があります
- ポリシー施行後は対応していないワークフローがCIで失敗します
一般の Kubernetes エコシステム開発者:
- これはKubernetesプロジェクト自体の内部ポリシーであり、一般ユーザーのクラスター運用には直接影響しません
- ただし、同様のベストプラクティスを自社のGitHub Actionsにも適用することが推奨されます