설명
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 키를 지정합니다. 기존 데이터나 모든 후속 쿼리를 자동으로 다시 암호화하는 설정은 아닙니다.