Triage and Remediation
- Remediation
Remediation
Using Console
Using Console
Below are the console steps. Because DAX does not support turning on encryption for an existing cluster, you must create a new encrypted cluster and then cut over your application.
1. Check current DAX cluster encryption status
- Sign in to the AWS Management Console.
- Go to DynamoDB.
- In the left navigation pane, choose DAX (or go directly to the DAX console:
https://console.aws.amazon.com/dax/home). - Select the DAX cluster in question.
- On the Details tab, check:
- Encryption / Encryption at rest: If it says Disabled or Not encrypted, you need a new encrypted cluster.
2. Prepare a KMS key (if you don’t want to use the AWS-managed key)
If you’re OK with the AWS-managed key for DAX, you can skip this.- Go to the AWS KMS console.
- Choose Customer managed keys → Create key.
- Select Symmetric and Encrypt and decrypt.
- Configure:
- Key administrators (who can manage the key).
- Key users (roles your DAX cluster and applications will use).
- Finish key creation and note the KMS Key ID / ARN.
3. Create a new encrypted DAX cluster
- Go to the DAX console.
- Click Create cluster.
- Configure:
- Cluster name: New name (e.g.,
my-app-dax-encrypted). - Node type, Number of nodes, and Replication factor to match your existing cluster (or adjust as required).
- Cluster name: New name (e.g.,
- Under Security / Encryption:
- Turn Encryption at rest to Enabled.
- For KMS key, choose:
- AWS owned key or
- Customer managed key you created (recommended if you need key control).
- Choose the appropriate:
- VPC, subnet group, security groups, and IAM role so it can reach your DynamoDB tables and your application can reach DAX.
- Click Create.
- Wait until the new cluster status is Available.
4. Point your application to the new encrypted DAX cluster
- In the DAX console, open the new encrypted cluster.
- Copy the Cluster endpoint (e.g.,
my-app-dax-encrypted.xxxxxx.clustercfg.dax.use1.cache.amazonaws.com:8111). - In your application configuration:
- Update the DAX endpoint in your SDK/client configuration to the new cluster endpoint.
- Deploy/restart your application so it connects to the new DAX cluster.
- Monitor:
- DAX metrics (hit rate, CPU, latency) for the new cluster.
- Application logs for connection or timeout errors.
5. Decommission the old unencrypted cluster
Once you confirm the application is functioning correctly and traffic is fully on the new cluster:- Go to the DAX console.
- Select the old (unencrypted) DAX cluster.
- Choose Delete cluster.
- Confirm the deletion.
6. (Optional) Validate compliance
- Go to AWS Config or your security/compliance tool.
- Re-run the check/rule (e.g., “DAX cluster should be encrypted at rest”).
- Confirm that the violation is cleared for the new cluster.
Using CLI
Using CLI
For DynamoDB Accelerator (DAX), encryption at rest must be enabled when you create the cluster. It cannot be turned on for an existing cluster. Remediation via AWS CLI therefore means:
Note the
If you want to use the AWS-managed key for DAX instead of a customer key, omit Wait until the cluster is
(Optional) If the old subnet groups or parameter groups are no longer needed, delete them as well.
Key point: There is no
- Create a new encrypted DAX cluster
- Point your application to the new cluster
- Delete the old unencrypted cluster
1. (Optional) Create or choose a KMS key
If you want to use a customer-managed KMS key (recommended):KeyId from the output (e.g. arn:aws:kms:us-east-1:123456789012:key/xxxx).Ensure the key policy allows DAX to use it (principal: dax.amazonaws.com) or just use the default AWS-managed key for DAX if acceptable.2. (Optional) Create a subnet group for DAX
If you don’t already have one:3. Create a new encrypted DAX cluster
Use--sse-specification Enabled=true and (optionally) --sse-specification KmsKeyId=...:KmsKeyId:available:4. Update your application configuration
Update your app to use the new cluster endpoint:-
Get the endpoint:
- Replace the old DAX endpoint in your app config with this new one.
- Deploy/restart your app as needed and verify it is using the new cluster successfully.
5. Delete the old unencrypted DAX cluster
After you’ve confirmed all traffic is using the new encrypted cluster:Key point: There is no
modify-cluster option to enable encryption on an existing DAX cluster. The only compliant remediation is to recreate the cluster with --sse-specification Enabled=true.Using Python
Using Python
For DynamoDB DAX, encryption at rest must be enabled when the cluster is created; you cannot turn it on for an existing unencrypted cluster. Remediation is therefore:
Make sure your IAM user/role has permissions for:
If
You can also wait for deletion:
- Create a new encrypted DAX cluster.
- Point your app to the new cluster.
- Delete the old unencrypted cluster.
1. Prerequisites
dax:DescribeClustersdax:CreateClusterdax:UpdateClusterdax:DeleteClusteriam:PassRole(if using a service role)
2. Check current DAX cluster encryption status
status is None or DISABLED, you need a new encrypted cluster.3. Create a new DAX cluster with encryption enabled
Key points:- Set
SSESpecification={'Enabled': True}. - Use same node type, VPC, security groups, and subnet groups as the old cluster.
- Optionally specify a KMS key via
KmsKeyId(otherwise AWS-managed key is used).
4. Update your application to use the new cluster
- Get the new cluster’s endpoint:
- Update your app config / environment variables / secrets to use
new_endpointinstead of the old one. - Redeploy / restart your application so it connects to the new encrypted DAX cluster.
5. Delete the old unencrypted cluster
Once you’ve confirmed the app uses the new encrypted cluster and it’s stable:6. (Optional) Wrap into a remediation script
You can encapsulate this logic (detect unencrypted → create encrypted → output new endpoint) into a script and run it for each non‑compliant cluster.Using Terraform
Using Terraform
server_side_encryption on an existing unencrypted DAX cluster forces replacement of the cluster; AWS does not support in‑place encryption, so Terraform will destroy the old cluster and create a new encrypted one (plan will show the aws_dax_cluster resource being replaced, with server_side_encryption.enabled changing from false (or null) to true).
