I'm not sure what to title this question or if this is the right place to ask it. After Googling and continually coming up empty, I'm turning here as a last resort.
I've developed a SAAS web application that generates complex reports for our clients. The reports are generated by pulling data from our client's SQL Service instance. Currently we access SQL Server via a VPN.
Having full network access to multiple clients server via the VPN is a security risk that we would like to move away from. My idea is to write an agent that will run as a Windows service that will connect to our servers and wait for requests for data from the SQL server instance to which it will have access via the local network.
My question is how to go about implementing the connection between the Windows service and my servers. The primary requirement is that it be always connected and ready to serve data from SQL Server. One option I've come across is using RabbitMQ in a RPC set up, but this is about the only solution I've come across. What are other viable ways to implement this kind of solution?
I feel like this isn't an altogether unusual requirement but have found very little information online pointing me in the right direction.