Файл паролей в среде Windows?

278
Markus L

Я ищу способ хранения пароля базы данных на рабочем компьютере, чтобы мое собственное приложение могло его прочитать (для подключения к базе данных), но пользователь без прав администратора не может его прочитать. Администратор должен иметь возможность сменить пароль, желательно автоматически.

Я имею в виду что-то вроде файла .pgpass для PostgreSQL в среде Linux. Это возможно и в среде Windows?

Я думаю, что файл паролей может быть сделан доступным только для администраторов. Но может ли программа, исполняемая для пользователя, получить доступ к этому файлу? Кроме того, возможно ли с помощью групповых политик распространять такой файл по сети?


Другие решения, о которых я думаю (возможно, с большими усилиями):

  1. Зашифруйте файл паролей. Только приложение и администраторы имеют действительные ключи для расшифровки и изменения / чтения файла.
  2. Получить пароль с сетевого ресурса, предположительно зашифрованного также.
1
Этого можно добиться в Windows 8.0+, подключив зашифрованный файл Bitlocker.VHDX. Я не уверен, на какое приложение вы ссылаетесь. Вы также можете сделать это, используя EFS в выпусках Windows, которые поддерживают EFS. Если вы используете EFS, вы можете хранить пароль в виде простого текста, поскольку все файлы в профиле пользователя зашифрованы и доступны только пользователям с сертификатом. Ramhound 6 лет назад 1
@Ramhound Я ссылаюсь на * свое * приложение, которое я буду разрабатывать (вопрос отредактирован). Я посмотрю в теме Bitlocker, если это возможно. Было бы здорово получить к нему доступ с помощью API C #. Markus L 6 лет назад 0

2 ответа на вопрос

1
Allen Howard

В ответ на ваш вопрос только о доступе администратора

Windows выполняет сервисы с разрешениями пользователя (если вы не запускаете от имени администратора или другого пользователя), поэтому, если у пользователя нет доступа к файлу, программа также не будет работать.

В ответ на вопрос о групповой политике

Да, вы можете использовать групповую политику для распространения файлов через Предпочтения групповой политики. (См .: https://www.adamfowlerit.com/2016/07/group-policy-preferences-replace-existing-file/ )

Спасибо за разъяснение прав пользователя - это звучит логично. Также спасибо за ссылку - это поможет мне начать. Markus L 6 лет назад 0
0
Markus L

Если кому-то интересно: я придумал следующее решение.

Пароль хранится в зашифрованном виде в файле XML («контейнер паролей»). Контейнер может быть открыт и отредактирован с паролем администратора. Шифрование симметричное. Контейнер размещается на сетевом ресурсе, просто в сетевом каталоге.

Прикладная программа получает местоположение контейнера паролей и может открывать контейнер паролей, поскольку пароль администратора хранится в коде.

Я знаю, что это решение не на 100% безопасно, потому что пароли не должны храниться в коде. Однако для этих требований (пароль базы данных должен быть скрыт от пользователя, пароль базы данных должен быть администрируемым), решение достаточно хорошее.