説明
Glue Data Catalog には、メタデータとデータソースへの接続情報が保存されます。カタログの保存時暗号化と接続パスワードの保護は独立した設定であり、両方を確認する必要があります。
return_connection_password_encrypted = true は、GetConnection と GetConnections の応答でもパスワードを暗号化された状態に保ちます。カタログの暗号化だけでは、この保護の代わりにはなりません。カタログの暗号化では、カスタマーマネージドキーを指定しない場合、AWS マネージド KMS キーを使用できます。
想定される影響
メタデータや接続パスワードの保護が不十分だと、保存情報や取得時の応答にアクセスした相手に機密情報が漏えいするおそれがあります。一方、必要な KMS 権限を取り消したり、キーを使用できなくしたりすると、カタログの読み取りやデータ処理ジョブが失敗する場合があります。
対処方法
encryption_at_restでサポートされる KMS 暗号化モードを選び、組織の要件に合ったキーを使用してください。カスタマーマネージドキーを選ぶ場合は、sse_aws_kms_key_idを指定してください。connection_password_encryptionにreturn_connection_password_encrypted = trueと適切なaws_kms_key_idを設定してください。接続の作成・更新とパスワードの復号に必要な権限を分け、最小限に制限してください。- 変更後は実際のカタログ、既存の接続、取得時の応答、ジョブの動作を確認してください。データソース自体の暗号化と TLS は別途管理してください。
例
参照する対称 KMS キーと必要な権限は別途用意してください。どちらもカタログの保存時暗号化は有効で、応答内のパスワードを暗号化された状態に保つかどうかだけが異なります。
応答内のパスワード暗号化を無効化
hcl
resource "aws_glue_data_catalog_encryption_settings" "catalog_settings" {
data_catalog_encryption_settings {
connection_password_encryption {
aws_kms_key_id = aws_kms_key.test.arn
return_connection_password_encrypted = false
}
encryption_at_rest {
catalog_encryption_mode = "SSE-KMS"
sse_aws_kms_key_id = aws_kms_key.test.arn
}
}
}
取得時の応答でパスワードを暗号化された状態に保つ設定ではありません。カタログ全体が未暗号化であることを意味するものではありません。
応答内のパスワード暗号化を有効化
hcl
resource "aws_glue_data_catalog_encryption_settings" "catalog_settings" {
data_catalog_encryption_settings {
connection_password_encryption {
aws_kms_key_id = aws_kms_key.test.arn
return_connection_password_encrypted = true
}
encryption_at_rest {
catalog_encryption_mode = "SSE-KMS"
sse_aws_kms_key_id = aws_kms_key.test.arn
}
}
}
接続パスワードを暗号化された状態で返すように設定しています。そのキーの復号権限は、実際にパスワードを必要とする主体だけに付与してください。