Glue Data Catalogにおけるカスタマー管理キーによる暗号化の設定手順

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。
今回は、AWS Glue Data Catalogのメタデータがカスタマー管理キー (CMK) による保管時の暗号化が有効になっていない状態について、そのリスクと対策を解説します。

ポリシーの説明
Security Hub コントロール AWS Glue – AWS Security Hub
[Glue.3] AWS Glue 機械学習変換は保管時に暗号化する必要があります
このコントロールは、 AWS Glue 機械学習変換が保管時に暗号化されているかどうかを確認します。機械学習変換が保管中に暗号化されていない場合、コントロールは失敗します。
対応すべきコンプライアンスの基準によっては顧客管理キーによる暗号化が求められると思いますので必要性に応じて設定するようにしましょう。
修復方法
AWS Glue Data CatalogのメタデータをKMSカスタマー管理キーで暗号化する設定は、AWSコンソールまたはTerraformで行えます。
AWSコンソールでの修復手順
AWSコンソールを使用して、AWS Glue Data Catalogのメタデータの保管時の暗号化をKMS CMKで有効にします。
前提:
- メタデータを暗号化するためのAWS KMS カスタマー管理キー (CMK) が既に存在すること。
- CMKのキーポリシーには、Glueサービス (
glue.amazonaws.com
) がキーを使用するための適切な権限(kms:Encrypt
,kms:Decrypt
など)が付与されている必要があります。
- CMKのキーポリシーには、Glueサービス (
- AWS Glueサービスへ移動: AWSコンソールにログインし、AWS Glue サービスを開きます。
- 設定へ移動: 左側のナビゲーションペインで「データカタログ」の下にある「設定」を選択します。
- Data Catalog設定の編集: 「編集」をクリックします。
- データカタログの暗号化設定: 「データカタログの暗号化」セクションを見つけます。
- 「暗号化モード」で「暗号化」を選択します。「KMS キー」のドロップダウンメニューから、「AWS Key Management Service カスタマー管理キー (CMK) を選択する」を選択します。ドロップダウンメニューから、使用したい既存のKMS CMKを選択します。
- もし適切なCMKがリストに表示されない場合は、正しいIAM権限があるか、またはCMKが作成されているか確認してください。
- 「暗号化モード」で「暗号化」を選択します。「KMS キー」のドロップダウンメニューから、「AWS Key Management Service カスタマー管理キー (CMK) を選択する」を選択します。ドロップダウンメニューから、使用したい既存のKMS CMKを選択します。
- 変更を保存: 設定を確認し、「保存」をクリックします。

これで、このリージョンのAWS Glue Data Catalogに保存されているすべてのメタデータが、指定したKMS CMKを使用して保管時に暗号化されるようになります。
Terraformでの修復手順
TerraformでAWS Glue Data CatalogのメタデータをKMSカスタマー管理キーで暗号化するには、aws_glue_data_catalog_encryption_settings
リソースを使用します。
# (例) Data Catalogメタデータ暗号化用のKMSカスタマー管理キー (CMK)
resource "aws_kms_key" "glue_data_catalog_cmk" {
description = "KMS key for Glue Data Catalog encryption"
deletion_window_in_days = 10 # キーの削除をスケジュールするまでの日数
enable_key_rotation = true # キーの自動ローテーションを有効にする
policy = jsonencode({
Version = "2012-10-17",
Statement = [
{
Sid = "Enable IAM User Permissions",
Effect = "Allow",
Principal = {
AWS = "arn:aws:iam::${data.aws_caller_identity.current.account_id}:root" # アカウントルートユーザーにアクセス許可
},
Action = "kms:*",
Resource = "*"
},
{
Sid = "Allow Glue Service to use the key"
Effect = "Allow",
Principal = {
Service = "glue.amazonaws.com"
},
Action = [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
Resource = "*"
}
]
})
tags = {
Name = "GlueDataCatalogCMK"
}
}
# AWS Glue Data Catalogの暗号化設定
# このリソースはアカウントとリージョンごとに一つしか存在できません。
resource "aws_glue_data_catalog_encryption_settings" "main_data_catalog_encryption" {
data_catalog_encryption_settings {
connection_password_encryption {
return_connection_password_encrypted = true
kms_key_id = aws_kms_key.glue_data_catalog_cmk.arn
}
# メタデータ自体の暗号化設定
encryption_at_rest {
catalog_encryption_mode = "SSE-KMS" # KMS暗号化を有効にする
kms_key_id = aws_kms_key.glue_data_catalog_cmk.arn
}
}
# リソースの適用対象アカウントIDを明示的に指定
catalog_id = data.aws_caller_identity.current.account_id
}
上記のTerraformコードでは、以下のリソースを使用しています。
aws_kms_key
: Data Catalogの暗号化に使用するKMSカスタマー管理キー (CMK) を作成します。キーポリシーでは、アカウントルートユーザーにフルアクセスを許可し、glue.amazonaws.com
サービスプリンシパルに、鍵の暗号化/復号化に必要な権限を付与することが重要です。aws_glue_data_catalog_encryption_settings
: このリソースは、AWSアカウントとリージョンごとに唯一の設定を管理します。data_catalog_encryption_settings.encryption_at_rest.catalog_encryption_mode
:"SSE-KMS"
に設定することで、KMSによる保管時の暗号化を有効にします。data_catalog_encryption_settings.encryption_at_rest.kms_key_id
: 上記で作成したKMS CMKのARNを指定します。data_catalog_encryption_settings.connection_password_encryption
: (オプション) Glue接続のパスワード暗号化も設定できます。catalog_id
: 現在のAWSアカウントIDを指定します。
重要な注意点:
aws_glue_data_catalog_encryption_settings
リソースは、AWSアカウントとリージョンごとに一度だけしかデプロイできません。既に手動または他のTerraformコードでこの設定が存在する場合、競合が発生する可能性があります。- KMSキーポリシーが正しく設定されていないと、Glueサービスがメタデータにアクセスできなくなり、GlueジョブやCrawlerが失敗する可能性があります。
最後に
この記事では、AWS Glue Data CatalogのメタデータをKMSカスタマー管理キーで暗号化することの重要性について解説しました。この設定は、データレイク環境における機密性の高いメタデータを保護し、厳格なコンプライアンス要件を満たすために不可欠です。KMS CMKを使用することで、鍵の管理を完全に制御し、セキュリティ体制を一層強化することができます。 貴社のGlue Data Catalogメタデータは、KMSカスタマー管理キーで暗号化されていますか?この機会にぜひ設定を確認・強化してみてください。 こちらの内容の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。運用が非常にラクに出来る製品になっていますのでぜひ興味がある方はお問い合わせお待ちしております。
最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。