AWS Security Hub · RDS
RDS.5: RDS DB instances should use multiple AZs
Written and reviewed by Emnode · Last reviewed
What does AWS Security Hub RDS.5 check?
RDS.5 checks whether a standalone RDS DB instance is configured with multiple Availability Zones. It reports FAILED for any single-AZ instance. It does not apply to instances that are part of a Multi-AZ DB cluster deployment; that topology is covered by RDS.15.
Why does RDS.5 matter?
By default an RDS instance runs in a single AZ, and that is the only copy. If the AZ has a power, network, or hardware event the database is unreachable until AWS restores it or you rebuild from backup: hours of downtime and potentially lost data. Multi-AZ maintains a synchronous standby in a second AZ and fails over automatically in a minute or two, with no application change. The standby is not readable; it exists purely for durability and failover.
How do I fix RDS.5?
- Decide which databases warrant Multi-AZ: production and revenue-facing instances almost always do; dev/test usually do not.
- Enable it with modify-db-instance --multi-az --apply-immediately (the standby builds in the background with no downtime).
- Record single-AZ exceptions deliberately rather than leaving resilience to chance.
- Default production instances to Multi-AZ in IaC.
Remediation script · bash
# Fix the highest-impact data stores first: enable Multi-AZ on production databases.
for db in $(aws rds describe-db-instances \
--query 'DBInstances[?MultiAZ==`false` && DBClusterIdentifier==null].DBInstanceIdentifier' --output text); do
aws rds modify-db-instance --db-instance-identifier "$db" \
--multi-az --apply-immediately
echo "$db: standby being provisioned in a second AZ"
done
# Span a stateless compute fleet across three AZs, then mirror the set on its load balancer.
aws autoscaling update-auto-scaling-group --auto-scaling-group-name web-tier-asg \
--vpc-zone-identifier "subnet-0aaa1,subnet-0bbb2,subnet-0ccc3"
aws elbv2 set-subnets --load-balancer-arn "$ALB_ARN" \
--subnets subnet-0aaa1 subnet-0bbb2 subnet-0ccc3 Full walkthrough (console steps, edge cases and verification) in the lesson Deploy across multiple Availability Zones.
Is RDS.5 a false positive?
Multi-AZ roughly doubles the per-database cost because you pay to run the standby, so a single-AZ dev or throwaway instance failing RDS.5 is often a correct, deliberate choice: record it as an exception rather than enabling Multi-AZ everywhere to clear the dashboard.
More RDS controls
- RDS.1 An RDS snapshot is shared publicly
- RDS.2 An RDS instance is publicly accessible from the internet
- RDS.3 RDS DB instances should be encrypted at rest
- RDS.4 RDS snapshots should be encrypted at rest
- RDS.6 RDS lacks enhanced monitoring
- RDS.7 RDS clusters should have deletion protection
- RDS.8 RDS DB instances should have deletion protection
- RDS.9 RDS engine logs are not shipped to CloudWatch
- RDS.10 RDS relies on long-lived database passwords
- RDS.11 RDS instances should have automatic backups
- RDS.12 IAM auth should be configured for RDS clusters
- RDS.13 RDS is not receiving automatic minor security patches