コンテナーイメージのダイジェスト固定の確認

検証済みイメージのダイジェストを固定し、セキュリティ更新も管理してください。

説明

タグだけでイメージを指定すると、同じタグが後で別の内容を指す場合があります。そのため、同じ構成でもデプロイ時点によって異なるイメージが実行され、再現性が低下する可能性があります。

検証済みイメージのダイジェストを固定して、実行する内容を明確にしてください。固定だけでイメージの信頼性や脆弱性がないことが保証されるわけではありません。

想定される影響

  • 同じ構成から意図しないイメージ内容がデプロイされる場合があります。
  • 未検証のイメージが実行されたり、セキュリティ確認やインシデント分析が難しくなったりする可能性があります。

対処方法

  • 実際のリポジトリパスと、検証済みの @sha256:... ダイジェストを指定してください。必要なプラットフォームのイメージまたはイメージインデックスを確認してください。
  • 署名、提供元、脆弱性を確認し、セキュリティ更新を検討したうえで固定するダイジェストを更新してください。

例

image_repository には実際のリポジトリパスを、verified_image_digest には対象イメージで確認した SHA-256 の 64 桁の16進数を指定してください。以前の 63 桁の値は有効な SHA-256 ダイジェストではありません。保守されているイメージを使ってください。

変更前

hcl
resource "kubernetes_pod" "example" {
  metadata {
    name = "terraform-example"
  }

  spec {
    container {
      image = "nginx:1.7.9"
      name  = "example"
    }
  }
}

変更後

hcl
resource "kubernetes_pod" "example" {
  metadata {
    name = "terraform-example"
  }

  spec {
    container {
      image = "${var.image_repository}@sha256:${var.verified_image_digest}"
      name  = "example"
    }
  }
}

補足:

  • 変更前: nginx のタグだけを指定します。参照先の内容が変わる場合があります。
  • 変更後: 実際のリポジトリと検証済みダイジェストを指定して内容を固定します。イメージの安全性は別途確認する必要があります。

参考資料