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

Elasticsearch ドメインの実際の暗号化状態と KMS キーの選択を確認してください。

説明

Elasticsearch ドメインでは、保存時の暗号化と KMS キーの選択を併せて確認する必要があります。テンプレートに KmsKeyId がないだけで、平文で保存されているとは判断できません。AWS::Elasticsearch::Domain の CloudFormation プロパティ定義では、暗号化を有効にする場合にキーの指定が必要です。

キーポリシーとライフサイクルを直接管理する必要がある場合は、カスタマーマネージドキーを選択してください。暗号化したドメインにカスタマーマネージドキーがないだけで、データが公開されるわけではありません。

想定される影響

キーの選択や権限が組織の要件に合わないと、監査や職務分離の基準を満たせない場合があります。使用中のキーを無効化・削除すると、ドメインのデータにアクセスできなくなるおそれがあります。

対処方法

実際のドメインの暗号化状態とキーを確認し、適切な対称 KMS キーを EncryptionAtRestOptions.KmsKeyId に指定してください。サービスに必要な権限を与え、キーの管理権限は制限してください。暗号化したドメインのキーを別のキーへ変更することはできないため、必要に応じて新しいドメインへの移行を計画してください。キーの削除防止とデータ復旧も検証してください。

例

最初の例はキーの指定がない不完全な CloudFormation 設定であり、平文保存を示すものではありません。二つ目では、承認された実際のキー ID または ARN を入力します。インスタンスタイプと暗号化に対応した Elasticsearch バージョンを指定し、アクセスポリシーとネットワーク制御は別途設定してください。

キーを省略した設定

yaml
Parameters:
  ElasticsearchVersion:
    Type: String
Resources:
  ElasticsearchDomain:
    Type: AWS::Elasticsearch::Domain
    Properties:
      DomainName: test
      ElasticsearchVersion: !Ref ElasticsearchVersion
      ElasticsearchClusterConfig:
        InstanceType: t3.small.elasticsearch
      EncryptionAtRestOptions:
        Enabled: true
      EBSOptions:
        EBSEnabled: true
        VolumeSize: 20
        VolumeType: gp2

キーを指定した設定

yaml
Parameters:
  ElasticsearchVersion:
    Type: String
  EncryptionKeyId:
    Type: String
Resources:
  ElasticsearchDomain:
    Type: AWS::Elasticsearch::Domain
    Properties:
      DomainName: test
      ElasticsearchVersion: !Ref ElasticsearchVersion
      ElasticsearchClusterConfig:
        InstanceType: t3.small.elasticsearch
      EncryptionAtRestOptions:
        Enabled: true
        KmsKeyId: !Ref EncryptionKeyId
      EBSOptions:
        EBSEnabled: true
        VolumeSize: 20
        VolumeType: gp2

参考資料