保存時暗号化のない AWS Elasticsearch ドメイン

Elasticsearch のインデックスと関連する保存データを暗号化し、変更と復旧の手順を準備してください。

説明

検索ドメインにはログ、文書のインデックス、運用データが保存されることがあり、保存時暗号化が必要です。暗号化が無効な場合、インデックスと関連する保存データには、この保護が適用されません。

保存時暗号化はドメインのデータと自動スナップショットを保護します。手動スナップショットの保存先、CloudWatch に出力したログ、転送中のデータは別途保護する必要があります。

想定される影響

暗号化されていない保存データやバックアップを権限のない相手が取得すると、機密文書やログが漏えいするおそれがあります。組織の検索サービスに関する暗号化要件も満たせない場合があります。

対処方法

  • encrypt_at_rest に enabled = true を設定してください。カスタマーマネージドキーが必要な場合は、承認されたキー ARN を kms_key_id に指定してください。
  • 新しいドメインには、Elasticsearch 5.1 以降と暗号化に対応するインスタンスタイプが必要です。既存のドメインでは 6.7 以降で暗号化を有効にできます。それより前のバージョンでは Terraform がドメインを置き換える場合があるため、先にデータ移行を計画してください。
  • 変更計画とサービスの制約を確認し、実際の暗号化状態、キーの権限、スナップショットからの復旧、クライアント接続を検証してください。元のデータと復旧手段を保持してください。

例

サポートされるバージョンを変数で指定する暗号化設定の抜粋です。必要なインスタンス、ストレージ、アクセスポリシー、ネットワークは別途設定してください。

変更前

hcl
resource "aws_elasticsearch_domain" "search_domain" {
  domain_name           = "example"
  elasticsearch_version = var.elasticsearch_version

  encrypt_at_rest {
    enabled = false
  }
}

ドメインの保存時暗号化を無効にしています。

変更後

hcl
resource "aws_elasticsearch_domain" "search_domain" {
  domain_name           = "example"
  elasticsearch_version = var.elasticsearch_version

  encrypt_at_rest {
    enabled = true
  }
}

保存時暗号化を有効にしています。キーを省略すると既定のサービス KMS キーを使用するため、カスタマーマネージドキーの要件も別途確認してください。

参考資料