Atualmente, faço isso de várias maneiras diferentes:
- Eu criei contas de usuário limitadas no banco de dados local que só têm acesso de leitura às tabelas ou exibições apropriadas. Então eu uso stunnel para criar um canal criptografado entre o servidor externo e o servidor local. O servidor externo extrai do banco de dados local como se fosse local. Ambas as máquinas são protegidas por firewall adequadamente.
- Vou criar um banco de dados fictício no servidor externo e inserir os dados apropriados em um agendamento, novamente usando stunnel para o link. Às vezes, eu crio o banco de dados fictício em um servidor local e faço com que o servidor remoto fale com ele como no primeiro método acima.
Nenhuma dessas opções me dá uma sensação de calor, mas elas funcionam. Usar stunnel é legal porque é gratuito e relativamente fácil de configurar entre servidores Windows e Linux. A coisa a ter em mente aqui é: "o que acontece se o servidor remoto for comprometido?"
Estou convertendo alguns desses processos em serviços da web. Você pode conferir algo como XAware para criar esses serviços. Isso tem alguns benefícios. 1) Você não está expondo seus bancos de dados diretamente. 2) Você pode expor os serviços da Web diretamente aos clientes usando mecanismos padrão de segurança da Web e com mais controle do que o acesso bruto ao banco de dados.