Arquivo de senha no ambiente do Windows?

1

Eu 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ê-lo (para se conectar ao banco de dados), mas um usuário sem direitos de administração não pode lê-lo. Deve ser possível para um administrador alterar a senha, de preferência automaticamente.

O que eu tenho em mente é algo como o arquivo .pgpass para o PostgreSQL em um ambiente Linux. Isso é possível em um ambiente Windows também?

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


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

  1. Criptografar o arquivo de senha. Somente o aplicativo e os administradores têm as chaves válidas para descriptografar e alterar / ler o arquivo.
  2. Recupere a senha de um recurso de rede, presumivelmente criptografado também.
Markus L
fonte
1
Você pode conseguir isso, no Windows 8.0+, montando um arquivo BitLocker criptografado.VHDX. Não tenho certeza "a que aplicativo" você se refere. Você também pode fazer isso usando o EFS em edições do Windows que oferecem suporte ao EFS. Se você usar o EFS, poderá armazenar a senha em texto sem formatação, pois todos os arquivos no perfil do usuário são criptografados e acessíveis somente aos usuários com o certificado.
Ramhound
@Ramhound Estou me referindo ao meu próprio aplicativo que vou desenvolver (questão editada). Eu vou olhar para o tópico do Bitlocker se este for um caminho possível. Seria legal ter acesso a ele com APIs C #.
Markus L

Respostas:

1

Em resposta à sua pergunta sobre acesso de administrador apenas

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 será executado.

Em resposta à pergunta de política de grupo

Sim, você pode usar a diretiva de grupo para distribuir arquivos por meio das Preferências de Diretiva de Grupo. (Veja: https://www.adamfowlerit.com/2016/07/group-policy-preferences-replace-existing-file/ )

Allen Howard
fonte
Obrigado por esclarecer os direitos do usuário - isso parece lógico. Também obrigado pelo link - isso me ajudará a começar.
Markus L
0

Se alguém estiver interessado: eu criei 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 o local do contêiner de senha e pode abrir o contêiner de senha, pois a senha do administrador é 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. No entanto, para esses requisitos (a senha do banco de dados deve ser ocultada do usuário, a senha do banco de dados deve ser administrável), a solução é boa o suficiente.

Markus L
fonte