I am creating a simple application so a distributed team can access sensitive data. This application will have a database that will be inaccessible to the public internet inside a VPC with my cloud provider. It will also have a web application inside this VPC that can access this database and accept incoming traffic from users. The web application will require users to authorize with MFA via a third party identity provider.

I am worried about opening this web application to all incoming HTTPS traffic in case the web application's authorization is somehow compromised. If we were all in a single office I could whitelist the office IP only, but we are a distributed team so maintaining a whitelist of all of the IPs of our users is impractical. I could also set up an ssh bastion and require my users to use ssh tunneling to access the application but the users will be non-technical so I feel it is unreasonable to expect them to do this.

After some research, I learned that I could set up a VPN and either whitelist the VPN's IP or connect the VPN to my VPC with my cloud provider. Either option will require users to log into the VPN before accessing the application. This seemed more secure to me at first glance but I realized that it is essentially requiring a second level of authorization that is no more or less secure than the web application's authorization.

Do you think the VPN layer is redundant? Does it provide enough extra security to justify the cost and hassle? I would also be open to other suggestions! Thanks.

  • It all comes down to the threats that you want to counter. It sounds like you are only using the VPN to be able to predict IPs. That's reducing its use case only to a proxy.
    – schroeder
    Dec 29, 2019 at 17:52
  • Security versus usability. In your case you can have a proxy you use instead though rather than a fully fledged VPN.
    – LTPCGO
    Jan 7, 2020 at 17:19


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.