テック技報最新号へ →
インフラ

dockerfile-pin: Dockerfile / compose / GitHub Actions のイメージを @sha256: で固定する

FROM node:22 のようなタグ指定は、同じタグの中身が差し替えられると知らないうちに別のイメージを使うことになる。azu 作の CLI dockerfile-pin を使うと、Dockerfile の FROM、compose の image:、GitHub Actions のコンテナイメージ参照にダイジェストを自動で付けられ、CI でピン留め漏れも検出できる。

@azu_re · 投稿 2026-04-01
#infra#docker#supply-chain#security#ci

どんなときに使う?

  • サプライチェーン攻撃対策として、ベースイメージを不変な参照にしたい
  • 既存リポジトリにまとめてダイジェストを入れたい/PR でピン留め漏れを止めたい

手順

bash
# 変更内容を確認(デフォルトは dry-run)
dockerfile-pin run

# 実際に書き込む
dockerfile-pin run --write

# 対象を絞る
dockerfile-pin run -f docker-compose.yml
dockerfile-pin run --glob '**/Dockerfile*'

# 既存のダイジェストを最新に更新
dockerfile-pin run --write --update

# 特定イメージを除外
dockerfile-pin run --ignore-images "mcr.microsoft.com/**"

結果は FROM node:22@sha256:<digest> のようにタグ+ダイジェストの形になる。

CI でチェック

bash
dockerfile-pin check            # ダイジェストがない/レジストリに存在しないと exit 1
dockerfile-pin check --syntax-only   # レジストリに問い合わせない
dockerfile-pin check --format json

README では PR ごとに dockerfile-pin check を走らせる GitHub Actions の例(aqua でインストール)が紹介されている。-f / --glob を省略すると git ls-files から対象ファイルを自動検出する。

注意点

出典

X の元の投稿を開く