AWS Security Hub · RDS
RDS.24: RDS uses a default admin username
Written and reviewed by Emnode · Last reviewed
What does AWS Security Hub RDS.24 check?
RDS.24 checks the master administrator username on an RDS DB cluster. It reports FAILED when the MasterUsername is left at one of the engine defaults (admin or postgres), which are the only values the backing Config rule rds-cluster-default-admin-check treats as non-compliant. The control does not apply to Neptune or DocumentDB clusters.
Why does RDS.24 matter?
The master user is the highest-privilege account on the database, and its name is fixed at creation: there is no in-place rename. Accepting a default username hands an attacker half the credential pair for free: a brute-force or credential-stuffing campaign now only has to guess the password, not the username. A non-obvious admin name shrinks the attack surface from two unknowns to one for the entire lifetime of the cluster.
How do I fix RDS.24?
- Adopt a non-default master username convention and enforce it in IaC templates so new clusters never fail this control.
- For existing clusters, plan a migration: snapshot, restore (or stand up a new cluster) with a custom MasterUsername, and cut traffic over in a maintenance window.
- Inventory the backlog of clusters on default usernames and schedule the migrations rather than deferring them.
Remediation script · bash
# Move the highest-impact databases onto IAM authentication first (free, no reboot).
for db in $(aws rds describe-db-instances \
--query 'DBInstances[?IAMDatabaseAuthenticationEnabled==`false`].DBInstanceIdentifier' \
--output text); do
aws rds modify-db-instance --db-instance-identifier "$db" \
--enable-iam-database-authentication --apply-immediately
echo "$db: IAM database authentication enabled"
done
# Find every instance still using a default admin username (immutable; needs migration).
aws rds describe-db-instances \
--query "DBInstances[?contains(['admin','postgres','root','sa','master','mysql','dbadmin'], MasterUsername)].[DBInstanceIdentifier,MasterUsername]" \
--output table
# Recreate one of those with a non-default master username set explicitly at creation.
aws rds restore-db-cluster-from-snapshot \
--db-cluster-identifier prod-orders-db-v2 \
--snapshot-identifier prod-orders-db-pre-rename \
--engine aurora-postgresql Full walkthrough (console steps, edge cases and verification) in the lesson Harden database auth, ports and access.
Is RDS.24 a false positive?
The username cannot be changed in place on a running cluster, so an existing default-named cluster always requires a snapshot-and-rebuild migration rather than a quick modify call.
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.5 RDS DB instances should use multiple AZs
- 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