Public RDS Instances: A Misstep With Massive Risk
07/29/2025
β
Lensix
AWS Checks

One of the high-risk checks we run at Lensix is for publicly accessible RDS instances - databases exposed directly to the internet. This is usually not intentional and is rarely safe.
π‘ Why it matters
Why is this such a bad idea? Here are a few reasons:
- Security Risk: Public RDS instances are prime targets for automated scanning, brute-force attacks, and exploitation. Even if you block access with security groups, it opens up the possibility of misconfigurations leading to catastrophic consequences.
- Compliance Violations: Frameworks like HIPAA, PCI-DSS, ISO 27001, and SOC 2 prohibit or severely restrict direct public access to data stores. Even if you limit exposure, you will have to explain this every time.
- No Web Application Shield: Unlike a web app behind a WAF or CDN, a public RDS instance is exposed as-is — often with default ports.
π§© How Does It Happen?
There are a lot of ways that DBs end up public, almost always accidentally. Some examples:
- Default Configs: A developer launches a DB from the console and leaves "public access" enabled, or someone checks the box on creation without realizing the consequences.
- Test or Temp Setups: Someone might have required public access for quick testing or cross-account access and forgot to remove it.
- Lack of Knowledge: Sometimes, engineers may not understand the cloud network infrastructure and its ability to utilize private networks, or might think that a DB needs to be public to function with their other systems.
β οΈ Common Caveats
- Marking a DB as publicly accessible does not guarantee exposure - it must also have open security groups or network paths. But enabling public access strips away its most powerful layer of protection.
- In the rare case that a database does need to be public, there should be layers of security such as strong passwords, security group rules, proxies, and end-to-end encryption.
β What to do about it
- Audit all RDS instances: Use tools like Lensix or AWS CLI to find public flags.
- Use VPC peering, bastions, or session manager to enable safe, indirect access.
- Update IaC modules: Make sure Terraform, CloudFormation, or CDK defaults to private-only deployments.
- Use PrivateLink or VPNs for secure, managed access across environments.
π Bottom Line
A publicly exposed database is a fast track to a breach. If you wouldn't post your app's credentials on GitHub, don't leave your RDS wide open either. Lensix can help you spot these kinds of misconfigurations and track them to remediation.