Elasticsearch domains should have encryption at-rest enabled
Checks that the Elasticsearch domain has encryption at rest enabled, so its indexes, automated snapshots, swap files and the logs kept on its nodes are encrypted with an AWS KMS key and unreadable without it. Enabling it on an existing domain needs Elasticsearch 6.7 or later, and some instance types do not support it.
- service
- Elasticsearch
- severity
- Medium
- scope
- evaluated in every region
How to fix it
- Can't be undone: Encryption at rest cannot be turned off once on; going back means a new domain built from a manual snapshot of this one.
- Interrupts service: Turning it on runs a blue/green deployment, so latency and rejected requests can rise while data copies; apply it at low traffic.
In the console
OpenSearch Service → Domains → the domain → Actions → Edit security configuration → Encryption
- Enable encryption of data at rest
- Selected; UltraWarm and cold storage must be off while you enable it
- Use AWS owned key
- Selected, or cleared for a customer managed symmetric key; settle it first, the key cannot change later
With the AWS CLI
aws es update-elasticsearch-domain-config --domain-name <domain-name> --encryption-at-rest-options Enabled=true --region <region>With Terraform
- Replaces the resource: Below elasticsearch_version 6.7, or with kms_key_id added, enabling encrypt_at_rest in Terraform destroys the domain and builds an empty one; upgrade first, and use the console for a customer key.
resource "aws_elasticsearch_domain" "this" {
domain_name = var.domain_name
encrypt_at_rest {
enabled = true
}
}
See which of your accounts this check is failing on.
Book a live scan