ノード間暗号化がない Elasticsearch ドメイン

Elasticsearch ドメイン内のノード間通信を暗号化してください。

説明

検索クラスターでは、インデックスデータ、ログ、ドキュメントを複数のノード間でやり取りします。ノード間暗号化がないと、この内部通信が平文で送信される可能性があります。

ノード間の TLS は、ドメイン内部の通信を保護します。クライアントの HTTPS 接続、保存時暗号化、アクセスポリシーは別途設定する必要があります。

想定される影響

内部の通信経路が侵害されると、暗号化されていないデータが漏えいする可能性があります。内部サービス間の通信を暗号化する要件を満たせない場合もあります。

対処方法

  • node_to_node_encryption { enabled = true } を設定してください。
  • 新規 Elasticsearch ドメインでは 6.0 以降、既存ドメインでの有効化では 6.7 以降が必要です。バージョンの互換性と変更計画を確認してください。有効にした設定は、同じドメインでは無効に戻せません。
  • HTTPS の強制、保存時暗号化、アクセス権限も併せて確認してください。

例

var.elasticsearch_version には、ノード間暗号化と選択したインスタンスタイプをサポートするバージョンを指定してください。以下はドメイン設定の抜粋です。

変更前

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

  cluster_config {
    instance_type = "r4.large.elasticsearch"
  }
}

ノード間暗号化を有効にしていません。

変更後

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

  cluster_config {
    instance_type = "r4.large.elasticsearch"
  }

  node_to_node_encryption {
    enabled = true
  }
}

内部のノード間通信を暗号化します。この設定だけでは、クライアントの HTTP 接続は遮断されず、保存データも暗号化されません。

参考資料