Check ID:
Provider: AWS
Service:
Severity: CRITICAL
Categories:
Resource type:
rds_instance_no_public_accessProvider: AWS
Service:
rdsSeverity: CRITICAL
Categories:
internet-exposedResource type:
AwsRdsDbInstanceWhat this check verifies
RDS DB instances are assessed for internet exposure using thePubliclyAccessible setting, security group ingress to the DB port from any address, and whether subnets are public. Instances that combine an internet-facing endpoint, open ingress, and public subnets are identified.
Risk
An internet-reachable database invites:- Brute-force and vulnerability probing, risking availability and integrity
- Unauthorized queries and dumps leading to confidentiality loss
Recommendation
Keep databases private by applying least privilege at the network layer:- Set
PubliclyAccessibletofalse - Place instances in private subnets
- Deny
0.0.0.0/0and::/0on the DB port - Expose access via private endpoints, VPN, or an application tier/DB proxy
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
aws rds modify-db-instance —db-instance-identifier <db_instance_id> —no-publicly-accessible —apply-immediately
References
- https://docs.aws.amazon.com/config/latest/developerguide/rds-instance-public-access-check.html
- https://www.trendmicro.com/trendaivisiononecloudriskmanagement/knowledge-base/aws/RDS/rds-publicly-accessible.html
- https://docs.aws.amazon.com/securityhub/latest/userguide/rds-controls.html
Where this check fires
This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable byCheck ID = rds_instance_no_public_access. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks