Pelo que entendi, você deseja fornecer uma experiência / ambiente mais personalizada para seus usuários finais dentro do aplicativo ("usuários do aplicativo"), além de melhorar a segurança acoplando o processo de autenticação do usuário com as credenciais de conexão DSN OBDC ("usuário do banco de dados").
Esse ambiente de usuário personalizado é normalmente alcançado ao fazer com que seus usuários finais se autentiquem com seu aplicativo. Isso geralmente é feito com os usuários digitando um nome de usuário e senha (que normalmente é armazenado em uma tabela my_app_db.users
) quando o aplicativo é carregado.
Antes que esta autenticação de usuário do aplicativo possa acontecer, o próprio aplicativo (ou máquina) precisa estabelecer uma conexão com o servidor de banco de dados. Este "usuário do banco de dados" normalmente é obtido com:
- Um usuário / senha de banco de dados estático e pré-definido que está codificado no aplicativo (e / ou script do instalador / binário). O script de instalação normalmente pedirá a você, o administrador do servidor, credenciais de banco de dados com (entre outros) as permissões
CREATE
eGRANT
(normalmente o usuário raiz) para que o instalador possa criar o usuário do banco de dados necessário. li> - Um usuário do banco de dados definido pelo usuário que foi pré-criado com as permissões apropriadas; o instalador solicitará que você forneça essas credenciais, que o aplicativo armazenará usando seu próprio método de criptografia reversível (ou ofuscação) para manter essas credenciais em algum lugar no cliente (um arquivo .dat, uma chave de registro, etc.) uma maneira que pode ser lida antes que a conexão do banco de dados seja estabelecida.
Quanto à segurança, a Regra de Menor Privilégio é importante aqui: esse usuário do banco de dados deve receber a menor quantidade de privilégios necessários para que o aplicativo funcione corretamente (isto é, SELECT, INSERT, UPDATE e talvez DELETE, e apenas banco de dados do aplicativo, nunca o banco de dados do sistema / mestre (s)).
Isso em combinação com não armazenar credenciais de banco de dados em texto simples nas máquinas dos usuários finais pode ser uma maneira de proteger seu aplicativo do acesso não autorizado. Lembre-se de que, se um usuário mal-intencionado obtiver acesso de administrador local a uma máquina em que seu aplicativo foi instalado, o início do jogo será praticamente extenso: eles provavelmente removeriam essa cadeia de conexão da memória descriptografada ou até mesmo de
Tenha em mente que muitos aplicativos de banco de dados usarão um servidor de aplicativos, essencialmente um "watch watch" no meio que intermedia a conexão de / para o banco de dados em nome do cliente. Isso geralmente é feito por motivos de desempenho / escalabilidade, mas também há um benefício de segurança em que o servidor de banco de dados pode ser isolado / restrito apenas ao servidor de aplicativos e nenhum cliente de usuário final pode acessá-lo diretamente.
Quanto às opções ODBC DSN e MySQL, não sou muito versado no que está disponível. No entanto, parece haver suporte para autenticação nativa do Windows em versões posteriores do MySQL.
Já tive sucesso usando o conector MySQL / NET com certificados de segurança em conjunto com o MySQL e um aplicativo ASP.NET, mas não sei se isso se estende ao Microsoft Access; você provavelmente teria que escrever alguma cola .NET lá.
E quando / se chegar aos detalhes, provavelmente é melhor você perguntar em estouro de pilha nesse momento.
Espero que isso ajude.