Arquivo de senha no ambiente Windows?

Arquivo de senha no ambiente Windows?

Estou procurando uma maneira de armazenar uma senha de banco de dados na máquina de trabalho para que meu próprio aplicativo possa lê-la (para se conectar ao banco de dados), mas um usuário sem direitos de administração não possa lê-la. Deve ser possível a um administrador alterar a senha, de preferência automaticamente.

O que tenho em mente é algo comoArquivo .pgpass para PostgreSQLem um ambiente Linux. Isso também é possível em um ambiente Windows?

Acho que o arquivo de senha pode ser acessível apenas para administradores. Mas um programa executável para o usuário também pode acessar esse arquivo? Além disso, é possível, com a ajuda de políticas de grupo, distribuir esse arquivo pela rede?


Outras soluções que estou pensando (provavelmente com mais esforço):

  1. Criptografe o arquivo de senha. Somente o aplicativo e os administradores possuem as chaves válidas para descriptografar e alterar/ler o arquivo.
  2. Recupere a senha de um recurso de rede, provavelmente criptografado também.

Responder1

Em resposta à sua pergunta sobre apenas acesso de administrador-

O Windows executa serviços com as permissões do usuário (a menos que você execute especificamente como administrador ou um usuário diferente); portanto, se o usuário não tiver acesso a um arquivo, o programa também não terá.

Em resposta à pergunta de política de grupo-

Sim, você pode usar a política de grupo para distribuir arquivos por meio das Preferências de Política de Grupo. (Ver:https://www.adamfowlerit.com/2016/07/group-policy-preferences-replace-existente-file/)

Responder2

Se alguém estiver interessado: eu encontrei a seguinte solução.

A senha é armazenada criptografada em um arquivo XML (o "contêiner de senha"). O contêiner pode ser aberto e editado com uma senha de administrador. A criptografia é simétrica. O contêiner é colocado em um recurso de rede, simplesmente dentro de um diretório de rede.

O aplicativo recebe a localização do contêiner de senha e é capaz de abri-lo porque a senha do administrador está depositada no código.

Eu sei que esta solução não é 100% segura porque as senhas não devem ser armazenadas no código. Porém, para esses requisitos (a senha do banco de dados deve ficar oculta do usuário, a senha do banco de dados deve ser administrável), a solução é boa o suficiente.

informação relacionada