암호화되지 않은 AWS AMI

EBS 기반 AMI의 원본 스냅샷 암호화를 확인하고 암호화된 이미지로 이전하세요.

설명

EBS 기반 AMI의 스냅샷에는 운영체제와 애플리케이션 데이터가 저장됩니다. 비암호화 스냅샷에는 저장 암호화 보호가 없으며, 같은 이미지를 여러 배포에 재사용하면 암호화 기준을 충족하지 못하는 구성이 확산될 수 있습니다.

스냅샷을 참조하는 AMI는 그 스냅샷의 실제 암호화 상태를 확인해야 합니다. encrypted의 생략만으로 비암호화라고 판단할 수는 없습니다. 인스턴스 시작 시 적용하는 EBS 기본 암호화도 기존 AMI 스냅샷을 소급하여 암호화하지는 않습니다.

잠재적 영향

스냅샷이나 디스크 데이터에 무단 접근할 때 정보 노출 위험이 커질 수 있습니다. 저장 암호화는 AMI 공유 권한이나 인스턴스 내부의 접근 통제를 대신하지 않습니다.

해결 방법

  • AMI에 연결된 모든 EBS 스냅샷의 암호화 상태와 필요한 KMS 권한을 확인하세요.
  • 기존 AMI는 암호화 옵션으로 복사하거나, 암호화한 스냅샷을 사용해 새 AMI를 등록하세요. aws_ami에서 snapshot_id와 encrypted를 함께 지정할 수는 없습니다.
  • 새 이미지의 부팅과 애플리케이션 동작을 시험한 뒤 배포에서 참조하는 AMI를 교체하세요. 기존 인스턴스와 스냅샷은 자동으로 암호화되지 않으므로 별도의 이전과 보존 계획이 필요합니다.

예시

AMI 등록 설정의 발췌입니다. snap-xxxxxxxx는 실제 스냅샷 ID로 바꾸세요. 스냅샷은 지정한 루트 디바이스에서 부팅할 수 있어야 하며 크기는 예시의 8 GiB 이하여야 합니다.

스냅샷 참조

hcl
resource "aws_ami" "example" {
  name                = "terraform-example"
  virtualization_type = "hvm"
  root_device_name    = "/dev/xvda"

  ebs_block_device {
    device_name = "/dev/xvda"
    snapshot_id = "snap-xxxxxxxx"
    volume_size = 8
  }
}

참조한 스냅샷이 비암호화 상태라면 AMI에도 그 스냅샷이 연결됩니다. 암호화 속성을 생략했다는 사실만으로 원본 상태를 알 수는 없습니다.

암호화된 스냅샷 참조

hcl
resource "aws_ami" "example" {
  name                = "terraform-example"
  virtualization_type = "hvm"
  root_device_name    = "/dev/xvda"

  ebs_block_device {
    device_name = "/dev/xvda"
    snapshot_id = var.encrypted_snapshot_id
    volume_size = 8
  }
}

var.encrypted_snapshot_id에는 미리 암호화한 스냅샷의 실제 ID를 제공하세요. AMI 등록 시 encrypted = true를 덧붙여 기존 스냅샷을 변환하는 방식은 지원되지 않습니다.

참조