Elasticsearch の暗号化キー設定の確認

Elasticsearch の実際の保存時暗号化と、組織の KMS キー管理要件を確認してください。

説明

検索ドメインには、ログ、運用データ、アプリケーションのインデックスが保存されることがあります。保存時暗号化と使用中のキーが組織の要件に合っているか確認してください。

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
  }
}

新しいドメインで使用するキーを明示しています。既存のドメインにそのまま適用しても、データを保持したままキーだけが変更されるわけではありません。

参考資料