説明
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 キーを指定します。既存データや後続のすべてのクエリ結果を自動で再暗号化する設定ではありません。