컨테이너 이미지 다이제스트 고정 점검

검증한 이미지의 다이제스트를 지정하고 보안 업데이트를 함께 관리하세요.

설명

컨테이너 이미지를 다이제스트 없이 태그만으로 지정하면 같은 태그가 다른 이미지 내용을 가리킬 수 있습니다. 이 경우 배포 시점마다 실제로 실행되는 이미지가 달라질 수 있어 재현성이 떨어집니다.

운영 환경에서는 검증한 이미지의 다이제스트를 고정해 실행할 내용을 분명히 하세요. 다이제스트 고정만으로 이미지가 신뢰할 수 있거나 취약점이 없다는 사실이 보장되지는 않습니다.

잠재적 영향

  • 같은 구성에서도 의도하지 않은 이미지 내용이 배포될 수 있습니다.
  • 검증되지 않은 이미지가 실행되거나 보안 점검과 사고 분석이 어려워질 수 있습니다.

해결 방법

  • 컨테이너 이미지에 실제 저장소 경로와 검증한 @sha256:... 다이제스트를 지정하세요. 필요한 플랫폼의 이미지 또는 이미지 인덱스를 확인하세요.
  • 이미지 서명과 출처, 취약점을 확인하고 보안 업데이트를 검토한 뒤 고정한 다이제스트를 갱신하세요.

예시

변경 후의 image_repository에는 실제 저장소 경로를, verified_image_digest에는 해당 이미지에서 확인한 SHA-256의 64자리 16진수 값을 지정하세요. 유지보수되는 이미지를 사용하세요.

변경 전

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 태그만 지정합니다. 태그가 가리키는 내용이 바뀔 수 있습니다.
  • 변경 후: 실제 저장소와 검증한 다이제스트를 입력받아 이미지 내용을 고정합니다. 이미지의 안전성 검토는 별도로 필요합니다.

참조