Back to Checks
Redshift cluster has Multi-AZ enabled
redshift_cluster_multi_az_enabled
Service: redshiftSeverity: medium
OfficialBuilt-inVerified
Categories:resilience
Resource Type:AwsRedshiftCluster
Amazon Redshift clusters are evaluated for Multi-AZ deployment on provisioned RA3 clusters, confirming compute spans two Availability Zones and is served via a single endpoint.
Risk
Absent Multi-AZ, a single-AZ cluster is exposed to AZ or node failures, leading to dropped connections, aborted queries, and stalled ETL/BI jobs. This reduces availability, increases RTO, delays analytics, and risks SLA breaches with cascading pipeline backlogs.
Run this check with Prowler
Run in Prowler CloudRun
prowler aws --checks redshift_cluster_multi_az_enabledRecommendation
Enable Multi-AZ deployments for provisioned RA3 clusters to avoid single-AZ dependency. Align designs to fault tolerance and high availability: provision sufficient capacity, implement client/ETL retries and reconnects, validate failover periodically, and monitor performance and error rates.
Remediation
CLI
aws redshift modify-cluster --cluster-identifier <cluster-id> --multi-azTerraform
# Enable Multi-AZ on a Redshift cluster
resource "aws_redshift_cluster" "<example_resource_name>" {
cluster_identifier = "<example_resource_id>"
multi_az = true # Critical: enables Multi-AZ so the check passes
}NativeIaC
# CloudFormation: Enable Multi-AZ on a Redshift cluster
Resources:
<example_resource_name>:
Type: AWS::Redshift::Cluster
Properties:
ClusterIdentifier: <example_resource_id>
MultiAZ: true # Critical: enables Multi-AZ so the check passesOther
1In the Amazon Redshift console, go to Clusters
2Select the target cluster
3Choose Actions > Activate Multi-AZ
4Confirm and wait until the cluster shows Multi-AZ: Yes
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_multi_az_enabled(Check):
def execute(self):
findings = []
for cluster in redshift_client.clusters:
report = Check_Report_AWS(metadata=self.metadata(), resource=cluster)
report.status = "FAIL"
report.status_extended = (
f"Redshift Cluster {cluster.id} does not have Multi-AZ enabled."
)
if cluster.multi_az == "Enabled":
report.status = "PASS"
report.status_extended = (
f"Redshift Cluster {cluster.id} has Multi-AZ enabled."
)
findings.append(report)
return findings