説明
検索ドメインには、ログ、運用データ、アプリケーションのインデックスが保存されることがあります。保存時暗号化と使用中のキーが組織の要件に合っているか確認してください。
Terraform AWS プロバイダー v6.14.0 のドキュメントでは、encrypt_at_rest が有効な状態で kms_key_id を省略すると、既定の aws/es サービス KMS キーを使用します。キーの識別子がないことだけで、暗号化されていないとは判断できません。キーポリシーとライフサイクルを組織で直接管理する必要がある場合は、カスタマーマネージドキーを選択してください。
想定される影響
既定のキーだけでは、組織の職務分離やキー管理の要件を満たせない場合があります。一方、使用中のキーを無効化または削除すると、ドメインのデータにアクセスできなくなるおそれがあります。キーの選択は、データへのアクセスポリシーやネットワーク制御の代わりにはなりません。
対処方法
- 実際の暗号化状態とキーを確認してください。カスタマーマネージドキーが必要な場合は、承認された対称 KMS キー ARN を
kms_key_idに指定し、サービスに必要な権限を付与してください。 - 暗号化済みドメインのキーを別のキーに直接変更することはできません。Terraform によるリソースの置き換えとデータ移行を確認し、元のデータと復旧手段を保持してください。
- キーの無効化や削除の権限を制限し、必要なデータアクセスと復旧を検証してください。
例
暗号化設定の抜粋です。新しいドメインで保存時暗号化を利用できる Elasticsearch 5.1 以降のバージョンとインスタンスタイプを選択してください。必要なストレージ、アクセスポリシー、ネットワークは別途設定し、キーの変数には実際に使用するキー ARN を指定してください。
既定のサービスキーの使用
hcl
resource "aws_elasticsearch_domain" "search_domain" {
domain_name = "example"
elasticsearch_version = var.elasticsearch_version
encrypt_at_rest {
enabled = true
}
}
既定のサービスキーで保存時暗号化を有効にしています。未暗号化の例ではありません。
カスタマーマネージドキーの指定
hcl
resource "aws_elasticsearch_domain" "search_domain" {
domain_name = "example"
elasticsearch_version = var.elasticsearch_version
encrypt_at_rest {
enabled = true
kms_key_id = var.encryption_key_arn
}
}
新しいドメインで使用するキーを明示しています。既存のドメインにそのまま適用しても、データを保持したままキーだけが変更されるわけではありません。