DynamoDB Accelerator clusters should be encrypted in transit
DAX clusters sit between your application and DynamoDB, caching frequently read items in memory. Without TLS on the endpoint, data traveling between your application and the DAX cluster moves in plaintext across the network. This exposes cached DynamoDB content, including potentially sensitive attributes, to network-level interception.
Once a DAX cluster is created, you cannot change the encryption-in-transit setting. A cluster deployed without TLS must be destroyed and recreated, which means cache invalidation and potential application downtime. Getting this right at provisioning time eliminates a painful retrofit.
Retrofit consideration
The cluster_endpoint_encryption_type argument on aws_dax_cluster is a ForceNew attribute. Changing it from NONE to TLS destroys and recreates the cluster, which clears the cache and causes downtime for applications relying on DAX.
Implementation
Choose the approach that matches how you manage Terraform.
Use AWS provider resources directly. See docs for the resources involved: aws_dax_cluster.
resource "aws_dax_cluster" "this" {
cluster_name = "pfxdax${random_integer.this.id}"
iam_role_arn = "arn:aws:iam::123456789012:role/example-role"
node_type = "dax.t3.small"
replication_factor = 1
subnet_group_name = "example-dax-subnet-group"
cluster_endpoint_encryption_type = "TLS"
}
What this control checks
The control validates that aws_dax_cluster has cluster_endpoint_encryption_type set to "TLS". It defaults to "NONE", so any cluster that omits this argument fails. No other value passes. The setting applies to the cluster endpoint and cannot be changed after cluster creation.
Common pitfalls
Default value is NONE, not TLS
The
cluster_endpoint_encryption_typeargument onaws_dax_clusterdefaults to"NONE". Omit it entirely and the cluster deploys without in-transit encryption, failing this control immediately. Always set it explicitly.ForceNew makes retrofitting destructive
Changing
cluster_endpoint_encryption_typefrom"NONE"to"TLS"on an existingaws_dax_clustertriggers a destroy-and-recreate. Plan for cache warmup time and verify your application handles DAX endpoint changes or uses DNS-based discovery before applying.DAX SDK client must support encryption
Enabling TLS on the cluster is only half the requirement. Your application also needs a DAX client SDK version that supports encrypted connections. Older SDK versions may fail to connect to a TLS-enabled cluster with no obvious error message.
Encryption in transit is separate from encryption at rest
The
server_side_encryptionblock onaws_dax_clustercontrols at-rest encryption. Thecluster_endpoint_encryption_typeargument controls in-transit encryption. Both must be configured independently; enabling one does not enable the other.
Audit evidence
Config rule evaluation results confirming all DAX clusters have endpoint encryption type set to TLS, or equivalent findings from a CSPM tool scanning the dax:DescribeClusters API response. The ClusterEndpointEncryptionType field should return TLS for every cluster.
Supporting evidence includes the DAX console showing "Encryption in transit: Enabled" on each cluster's details page, along with a current inventory confirming no clusters exist with plaintext endpoints.
Framework-specific interpretation
Related controls
Tool mappings
Use these identifiers to cross-reference this control across tools, reports, and evidence.
Compliance.tf Control:
dax_cluster_encryption_in_transit_enabledAWS Config Managed Rule:
DAX_TLS_ENDPOINT_ENCRYPTIONCheckov Check:
CKV_AWS_239Powerpipe Control:
aws_compliance.control.dax_cluster_encryption_in_transit_enabledProwler Check:
dynamodb_accelerator_cluster_in_transit_encryption_enabledAWS Security Hub Control:
DynamoDB.7
Last reviewed: 2026-03-09