I am hoping someone can clarify some network/security concerns about the following scenario:
I have a VPC that allows outbound connections to external internet resources, but is not supposed to allow inbound connections from any resources not within the VPC. Essentially all connections to VPC resources are through private IP addresses (or API gateway, tunnels, etc.).
I need to allow an external service to write data to into an RDS instance, and allow our internal resources to read that data. The external service is limited and we may only allow access via whitelisting certain IPs.
My initial thought was to create a publicly accessible RDS instance inside the VPC and attach a security group to the instance that whitelisted the required IPs. There is a concern that this exposes the entire VPC. It also causes issues with connecting through VPN as the public IP is not routed through point to point correctly (this cannot be fixed apparently), however I believe I can just use IAM authentication to get around this. Is the concern about exposing the entire VPC justified?
Alternatively, I believe we can create the RDS instance in another VPC and connect it to our main VPC via peer connections. I am not sure if this addresses the concerns, and it seems somewhat redundant.
I am hoping to get some suggestions on how to securely expose an RDS instance to specific IPs, while also allowing access from a multitude of AWS services in a secure way.