Я ищу способ хранения пароля базы данных на рабочем компьютере, чтобы мое собственное приложение могло его прочитать (для подключения к базе данных), но пользователь без прав администратора не может его прочитать. Администратор должен иметь возможность сменить пароль, желательно автоматически.
Я думаю, что файл паролей может быть сделан доступным только для администраторов. Но может ли программа, исполняемая для пользователя, получить доступ к этому файлу? Кроме того, возможно ли с помощью групповых политик распространять такой файл по сети?
Другие решения, о которых я думаю (возможно, с большими усилиями):
Зашифруйте файл паролей. Только приложение и администраторы имеют действительные ключи для расшифровки и изменения / чтения файла.
Получить пароль с сетевого ресурса, предположительно зашифрованного также.
Этого можно добиться в 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 выполняет сервисы с разрешениями пользователя (если вы не запускаете от имени администратора или другого пользователя), поэтому, если у пользователя нет доступа к файлу, программа также не будет работать.
Спасибо за разъяснение прав пользователя - это звучит логично. Также спасибо за ссылку - это поможет мне начать.
Markus L 6 лет назад
0
0
Markus L
Если кому-то интересно: я придумал следующее решение.
Пароль хранится в зашифрованном виде в файле XML («контейнер паролей»). Контейнер может быть открыт и отредактирован с паролем администратора. Шифрование симметричное. Контейнер размещается на сетевом ресурсе, просто в сетевом каталоге.
Прикладная программа получает местоположение контейнера паролей и может открывать контейнер паролей, поскольку пароль администратора хранится в коде.
Я знаю, что это решение не на 100% безопасно, потому что пароли не должны храниться в коде. Однако для этих требований (пароль базы данных должен быть скрыт от пользователя, пароль базы данных должен быть администрируемым), решение достаточно хорошее.