S3 객체 서버 측 암호화 설정 점검

S3 객체에 실제 적용되는 기본 암호화·업로드 설정·키 요구사항을 함께 확인하세요.

설명

S3 객체에는 설정 파일, 백업, 정적 자산 등 보호해야 할 데이터가 저장될 수 있습니다. 객체에 실제 적용된 암호화 방식과 키가 조직의 요구사항에 맞는지 확인하세요.

현재 새 S3 객체는 기본적으로 서버 측 암호화를 사용합니다. 업로드에 server_side_encryption을 명시하지 않으면 버킷의 기본 암호화가 적용되므로, 이 옵션의 생략만으로 비암호화라고 볼 수 없습니다. 명시적인 업로드 암호화 방식은 버킷 기본값과 다를 수 있습니다.

잠재적 영향

KMS 키 사용이나 키 통제가 필요한 환경에서는 기본 AES256만으로 요구사항을 충족하지 못할 수 있습니다. 이전의 비암호화 객체는 기본 설정을 바꾸어도 자동으로 암호화되지 않습니다. 암호화는 객체 읽기 권한과 공개 접근 통제를 대신하지 않습니다.

해결 방법

  • 버킷 기본 암호화와 실제 객체의 암호화 방식·키를 함께 확인하세요.
  • 조직 기준에 따라 AES256 또는 aws:kms와 필요한 키를 사용하세요. KMS가 필요한 버킷에 AES256을 명시해 요구사항을 우회하지 않도록 업로드 정책도 검토하세요.
  • 기존 비암호화 객체는 암호화를 적용한 복사를 계획하고 데이터·버전 보존과 읽기 동작을 검증하세요. 필요한 KMS 권한은 최소 범위로 부여하세요.

예시

버킷 이름은 전역에서 고유한 값으로 바꾸고 업로드할 index.html 파일을 준비하세요. 두 예시는 업로드 시 암호화 지정 여부를 비교하며, 고객 관리형 KMS 키를 요구하는 환경의 완성된 예시는 아닙니다.

버킷 기본 암호화 사용

hcl
resource "aws_s3_bucket" "artifact_bucket" {
  bucket = "examplebuckettftest"

  versioning {
    enabled = true
  }
}

resource "aws_s3_bucket_object" "artifact_file" {
  key    = "someobject"
  bucket = aws_s3_bucket.artifact_bucket.id
  source = "index.html"
}

업로드에 암호화를 따로 지정하지 않아 버킷 기본 암호화를 사용합니다. 새 객체의 평문 저장을 의미하지 않습니다.

SSE-S3 명시

hcl
resource "aws_s3_bucket" "artifact_bucket" {
  bucket = "examplebuckettftest"

  versioning {
    enabled = true
  }
}

resource "aws_s3_bucket_object" "artifact_file" {
  key                    = "someobject"
  bucket                 = aws_s3_bucket.artifact_bucket.id
  source                 = "index.html"
  server_side_encryption = "AES256"
}

이 업로드에 AES256을 명시합니다. 버킷이 KMS를 기본값으로 사용하더라도 이 요청은 SSE-S3를 선택하므로 조직의 키 요구사항에 맞는지 확인하세요.

참조