O acesso direto da aplicação ao banco de dados de forma remota, por si só, é uma potencial falha de segurança e deve ser evitado.
Se você vai distribuir tua aplicação para usuários diversos, cada um vai ter credenciais para acessar a aplicação, não é? Utilize isso para fazer autenticação/autorização, na camada de aplicação/serviço (um web service, por exemplo) e não no DB. Dessa forma, você não precisa colocar as credenciais do DB na aplicação de forma nenhuma.
Se você não vai distribuir isso, ou então é apenas para uso interno (ou de pessoas que você confia), pode deixar as credenciais na aplicação mesmo.
Não importa a gambiarra que você fizer, sempre vai ter um jeito de descobrir as credenciais e conectar diretamente no banco. Você pode apenas complicar esse processo, mas não impedi-lo completamente.
Se você quer fazer o acesso direto ao DB, você precisa que cada usuário do teu programa tenha um usuário no DB, por questões de logging, segurança, etc.
Parte pra uma camada de serviço e resolve isso lá, muito mais fácil.
FJ-21