Skip to main content
emnode / learn
Compliance Low severity

AWS Security Hub · RDS

RDS.6: RDS lacks enhanced monitoring

Written and reviewed by Emnode · Last reviewed

What does AWS Security Hub RDS.6 check?

RDS.6 evaluates whether an RDS DB instance has Enhanced Monitoring enabled. It reports FAILED for any instance with MonitoringInterval set to 0, which is the default — meaning the OS-level monitoring agent was never turned on.

Why does RDS.6 matter?

Default CloudWatch metrics are sampled from the hypervisor: they confirm a database is busy but never explain why. Without Enhanced Monitoring you cannot see per-process CPU, swap pressure, IO wait, or per-device disk utilisation — so incidents become guesswork and teams over-provision to bigger instances rather than fixing the real cause. It is also the prerequisite for any OS-level CloudWatch alarm.

How do I fix RDS.6?

  1. Create an IAM role once per account with the AWS-managed AmazonRDSEnhancedMonitoringRole policy attached.
  2. Run modify-db-instance with --monitoring-interval (15 seconds is the production sweet spot, 60 for dev/test) and --monitoring-role-arn pointing at that role.
  3. Verify the RDSOSMetrics log group starts receiving data, then bake the interval into your provisioning templates so new instances inherit it.

Remediation script · bash

# Apply Enhanced Monitoring to every non-compliant RDS instance in the region.
for id in $(aws rds describe-db-instances \
  --query "DBInstances[?MonitoringInterval==\`0\`].DBInstanceIdentifier" \
  --output text); do
    aws rds modify-db-instance \
      --db-instance-identifier "$id" \
      --monitoring-interval 60 \
      --monitoring-role-arn arn:aws:iam::123456789012:role/rds-monitoring-role \
      --apply-immediately
done

# Verify — every row should now show a non-zero MonitoringInterval.
aws rds describe-db-instances \
  --query "DBInstances[].{Id:DBInstanceIdentifier,Interval:MonitoringInterval}" \
  --output table

Full walkthrough (console steps, edge cases and verification) in the lesson Enable RDS Enhanced Monitoring.

Is RDS.6 a false positive?

Performance Insights being enabled does not satisfy RDS.6 — it surfaces engine-level query waits, not OS metrics. Enhanced Monitoring is a separate feature with its own MonitoringInterval, and the control only passes when that interval is non-zero.

Part of the learning path Tighten your databases
  • 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.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