Back to Checks
Redshift cluster has automated snapshots enabled
redshift_cluster_automated_snapshot
Service: redshiftSeverity: high
OfficialBuilt-inVerified
Categories:resilience
Resource Type:AwsRedshiftCluster
Amazon Redshift clusters are evaluated for automated snapshots being enabled with a retention period > 0, confirming that periodic backups are created and retained.
Risk
Without automated snapshots, clusters lack recent recovery points, degrading availability and integrity.
Accidental deletion, malicious changes, or failed ETL can cause data loss and prolonged recovery, increasing RPO/RTO and limiting effective forensic analysis.
Run this check with Prowler
Run in Prowler CloudRun
prowler aws --checks redshift_cluster_automated_snapshotRecommendation
Enable automated snapshots with retention aligned to RPO/RTO. Enforce least privilege on snapshot access and use encryption. Regularly test restores and monitor backup health.
For resilience, replicate snapshots to another Region/account and separate backup administration from data owners.
Remediation
CLI
aws redshift modify-cluster --cluster-identifier <example_resource_id> --automated-snapshot-retention-period 1Terraform
# Terraform: Enable automated snapshots for a Redshift cluster
resource "aws_redshift_cluster" "<example_resource_name>" {
cluster_identifier = "<example_resource_id>"
cluster_type = "single-node"
node_type = "<NODE_TYPE>"
database_name = "<DB_NAME>"
master_username = "<MASTER_USERNAME>"
master_password = "<MASTER_PASSWORD>"
automated_snapshot_retention_period = 1 # Critical: enables automated snapshots by retaining them for 1 day
}NativeIaC
# CloudFormation: Enable automated snapshots for a Redshift cluster
Resources:
<example_resource_name>:
Type: AWS::Redshift::Cluster
Properties:
ClusterType: single-node
NodeType: <NODE_TYPE>
DBName: <DB_NAME>
MasterUsername: <MASTER_USERNAME>
MasterUserPassword: <MASTER_PASSWORD>
AutomatedSnapshotRetentionPeriod: 1 # Critical: enables automated snapshots by retaining them for 1 dayOther
1Open the AWS Console and go to Amazon Redshift
2Select your cluster and click Modify
3Under Backup, set Automated snapshot retention period to 1 (or greater)
4Click Save changes and apply the modification
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.redshift.redshift_client import redshift_client
class redshift_cluster_automated_snapshot(Check):
def execute(self):
findings = []
for cluster in redshift_client.clusters:
report = Check_Report_AWS(metadata=self.metadata(), resource=cluster)
report.status = "PASS"
report.status_extended = (
f"Redshift Cluster {cluster.id} has automated snapshots enabled."
)
if not cluster.cluster_snapshots:
report.status = "FAIL"
report.status_extended = (
f"Redshift Cluster {cluster.id} has automated snapshots disabled."
)
findings.append(report)
return findings