S3 버전 관리 설정 점검

S3 버전 관리로 객체 변경과 삭제에 대비하세요.

설명

버전 관리는 객체가 덮어써지거나 일반 삭제 요청으로 삭제됐을 때 이전 버전을 복구할 수 있게 해 주는 보호 장치입니다. 버전 관리가 꺼져 있으면 실수로 파일을 지우거나 잘못된 파일로 덮어쓴 경우 복구가 어려워집니다.

버전 관리는 변경 불가능한 보관을 보장하지 않습니다. 권한이 있는 주체는 특정 버전을 영구 삭제할 수 있으며, 활성화 전에 이미 잃어버린 데이터를 되살리지는 못합니다.

잠재적 영향

  • 복구 어려움: 객체 삭제나 덮어쓰기 후 이전 버전을 되살리기 어렵습니다.
  • 데이터 손실 위험: 운영 파일, 백업, 배포 자산이 한 번의 실수로 유실될 수 있습니다.
  • 사고 대응 약화: 악성 변경이나 랜섬웨어 대응 시 복원 선택지가 줄어듭니다.

해결 방법

  • aws_s3_bucket_versioning에서 status = "Enabled"를 적용하세요. 중요 버킷은 생성 템플릿에 버전 관리 설정을 포함하세요.
  • 이전 버전의 보관 기간과 저장 비용을 고려해 수명 주기 정책을 관리하고 복구 절차를 시험하세요.
  • 버전 삭제 권한을 제한하고, 변경 불가능한 보관이 필요하면 S3 Object Lock도 검토하세요.

예시

다음은 AWS 공급자 3.x의 인라인 versioning과 ACL 문법을 사용한 예시입니다. 현재 구성에서는 별도 버전 관리 리소스를 사용하고 버킷 이름을 실제 값으로 바꾸세요.

변경 전

hcl
resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"
  acl    = "private"

  tags = {
    Name        = "My bucket"
    Environment = "Dev"
  }

  versioning {
    enabled = false
  }
}

변경 후

hcl
resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"
  acl    = "private"

  tags = {
    Name        = "My bucket"
    Environment = "Dev"
  }

  versioning {
    enabled = true
  }
}

설명:

변경 후에는 버전 관리를 활성화해 이후 객체 변경의 이전 버전을 보존할 수 있습니다. 삭제 마커와 영구 버전 삭제의 차이를 확인하고 필요한 버전을 실제로 복구할 수 있는지 시험하세요.

참조