All checks
Medium DynamoDB · regional

DynamoDB Accelerator (DAX) clusters should be encrypted at rest

Checks that the DAX cluster is encrypted at rest. DAX writes cached data to disk as it propagates changes from the primary node to read replicas, and encryption keeps that data unreadable to anyone who reaches the storage without AWS permission to decrypt it.

service
DynamoDB
severity
Medium
scope
evaluated in every region

How to fix it

  • Replaces the resource: Encryption at rest is fixed when a cluster is created: create a new encrypted cluster, repoint clients to its endpoint, then delete this one; its cache starts empty.
  • Can break clients: A cluster with encryption in transit accepts only TLS, so clients need a recent DAX client and the new daxs:// endpoint URL.

In the console

DynamoDB → DAX → Clusters → Create cluster → Encryption

Turn on encryption at rest
Selected; DAX uses an AWS managed key, as customer managed keys are not supported
Turn on encryption in transit
Selected as well: it is also fixed at creation, and DynamoDB.7 fails without it
Node types
Any type except dax.r3.*, which does not support encryption at rest

With the AWS CLI

aws dax create-cluster --cluster-name <new-cluster-name> --node-type <node-type> --replication-factor 3 --iam-role-arn <dax-role-arn> --subnet-group-name <subnet-group-name> --sse-specification Enabled=true --cluster-endpoint-encryption-type TLS --region <region>

With Terraform

  • Interrupts service: In Terraform server_side_encryption forces a new cluster, so applying it here deletes this cluster before its replacement is up.
resource "aws_dax_cluster" "this" {
  cluster_name                     = var.cluster_name
  iam_role_arn                     = var.dax_role_arn
  node_type                        = var.node_type
  replication_factor               = 3
  cluster_endpoint_encryption_type = "TLS"

  server_side_encryption {
    enabled = true
  }
}

See which of your accounts this check is failing on.

Book a live scan