All checks
Medium DynamoDB · regional

DynamoDB Accelerator clusters should be encrypted in transit

Checks that the DAX cluster's endpoint encryption type is TLS, so requests and responses between your application and the cluster are encrypted and the client can verify the cluster's certificate, which stops eavesdropping and tampering. TLS can affect performance, so test your application with it on.

service
DynamoDB
severity
Medium
scope
evaluated in every region

How to fix it

  • Replaces the resource: Encryption in transit is fixed when a cluster is created: create a new cluster with it on, shift your application's traffic to it, then delete this one.
  • Can break clients: The new cluster accepts only TLS, so clients need a recent DAX client and its daxs:// endpoint URL (port 9111 by default).

In the console

DynamoDB → DAX → Clusters → Create cluster → Encryption

Turn on encryption in transit
Selected
Turn on encryption at rest
Selected as well: it is also fixed at creation, and DynamoDB.3 fails without it

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> --cluster-endpoint-encryption-type TLS --sse-specification Enabled=true --region <region>

With Terraform

  • Interrupts service: In Terraform cluster_endpoint_encryption_type 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