1

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

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

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


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

  1. Зашифруйте файл паролей. Только приложение и администраторы имеют действительные ключи для расшифровки и изменения / чтения файла.
  2. Получить пароль с сетевого ресурса, предположительно зашифрованного также.

2 ответа2

1

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

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

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

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

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .