Check ID:
Provider: AWS
Service:
Severity: HIGH
Categories:
Resource type:
rds_instance_inside_vpcProvider: AWS
Service:
rdsSeverity: HIGH
Categories:
trust-boundaries, internet-exposedResource type:
AwsRdsDbInstanceWhat this check verifies
RDS DB instances are assessed for VPC placement by the presence of avpc_id indicating deployment within a VPC.
Instances without this association are treated as outside VPC networking.
Risk
Without VPC isolation, databases may expose internet-reachable endpoints and lack granular network controls. This degrades confidentiality and availability via scanning/brute force and data exfiltration, and threatens integrity through unauthorized connections and lateral movement.Recommendation
Deploy all RDS instances in a VPC, preferably in private subnets. Enforce least privilege with security groups, network ACLs, and restrictive routing. Use private connectivity (peering, VPN, Direct Connect), avoid public exposure, and apply defense in depth through segmentation and monitoring.Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
aws rds modify-db-instance —db-instance-identifier <example_resource_id> —db-subnet-group-name <example_resource_name> —apply-immediately
References
- https://docs.aws.amazon.com/securityhub/latest/userguide/rds-controls.html#rds-18
- https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html
- https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html#USER_VPC.Subnets
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_inside_vpc. 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