Docker イメージを @sha256 ダイジェストで固定する(dockerfile-pin)
FROM node:22 のようなタグ参照を node:22@sha256:<digest> に書き換え、タグの付け替えによるイメージ差し替え攻撃を防ぐ。
何を解決するか
- タグは可変。上流のアカウント侵害や誤操作で同じタグに別イメージが push されると、次のビルドでそのまま取り込まれる。
- ダイジェスト固定すれば、内容が変わればビルドが失敗する(=気づける)。
手順
azu さんの CLI dockerfile-pin で Dockerfile / compose.yaml を一括でピン留めできる。
dockerfile
# Before
FROM node:22-slim
# After(タグは可読性のため残し、digestで固定)
FROM node:22-slim@sha256:3f2a...<digest>- v1.4.0 で GitLab CI 設定、v1.5.0 で
COPY --from=に対応。 - 更新は Renovate / Dependabot の digest 更新機能と組み合わせると、ピン留めを維持したまま追従できる。
注意点
- マルチアーキテクチャイメージは「マニフェストリストのダイジェスト」を使う(単一アーキのダイジェストを書くと別アーキで失敗する)。
- ピン留めは「改ざん検知」であって「脆弱性対策」ではない。古いダイジェストのまま放置しない。