Athena 데이터베이스 생성 쿼리 결과 암호화 설정 점검

Athena 데이터베이스 생성 쿼리의 결과 저장 위치와 암호화 키를 확인하세요.

설명

Athena 분석 데이터와 쿼리 결과에는 고객 정보, 로그와 내부 운영 정보가 포함될 수 있습니다. 결과 저장 위치의 암호화와 접근 권한을 조직의 기준에 맞게 관리해야 합니다.

aws_athena_database의 encryption_configuration은 데이터베이스 생성·삭제 쿼리의 결과 설정입니다. 이 설정만으로 원본 S3 데이터, Glue 메타데이터와 이후 모든 쿼리가 보호되지는 않습니다. 또한 S3는 새 객체를 기본 암호화하므로 이 블록의 생략을 평문 저장으로 판단해서는 안 됩니다.

잠재적 영향

원하는 KMS 키나 키 정책이 적용되지 않아 조직의 키 관리 기준을 충족하지 못할 수 있습니다. 결과 파일의 접근 권한이 과도하면 암호화되어 있어도 민감정보가 노출될 수 있습니다.

해결 방법

  • 실제 결과 저장 위치와 적용된 암호화를 확인하세요. 고객 관리형 키가 필요하면 SSE_KMS와 사용 가능한 KMS 키 ARN을 지정하세요.
  • 이후 쿼리에도 같은 기준을 적용하려면 워크그룹 설정과 클라이언트 설정 재정의를 함께 구성하세요. 원본 데이터와 Glue 메타데이터는 별도로 검토하세요.
  • KMS와 S3 권한을 필요한 범위로 제한하세요. 암호화 설정 변경으로 데이터베이스 리소스가 재생성될 수 있으므로 Terraform 계획을 먼저 검토하세요.

예시

참조한 S3 버킷과 KMS 키를 별도로 정의하는 발췌입니다. 워크그룹에서 클라이언트 설정을 재정의하면 워크그룹의 결과 설정이 우선합니다.

별도 암호화 설정 생략

hcl
resource "aws_athena_database" "analytics_db" {
  name   = "database_name"
  bucket = aws_s3_bucket.hoge.bucket
}

이 리소스에 별도 결과 암호화 방식을 지정하지 않습니다. 실제 S3 기본값과 워크그룹 설정을 확인하세요.

결과 암호화 키 지정

hcl
resource "aws_athena_database" "analytics_db" {
  name   = "database_name"
  bucket = aws_s3_bucket.hoge.bucket

  encryption_configuration {
    encryption_option = "SSE_KMS"
    kms_key           = aws_kms_key.example.arn
  }
}

결과 설정에 사용할 KMS 키를 지정합니다. 기존 데이터나 모든 후속 쿼리를 자동으로 다시 암호화하는 설정은 아닙니다.

참조