Как безопасно хранить учетные данные базы данных для приложения Windows? - PullRequest
0 голосов
/ 06 сентября 2010

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

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

Как я могу достичь эквивалентного уровня безопасности аналогичным или другим способом на компьютере с Windows XP? То есть, как я могу запретить тем, у кого есть доступ к компьютеру или диску, изменять программу или читать учетные данные?

Немного предыстории: окно хоста - это рабочая станция, которую каждый день используют пользователи с неадминистративными привилегиями. Защищенные активы - это личные данные, примерно такие же конфиденциальные, как, например, школьный отчет. Приложение предназначено для использования около 10 человек, которые аутентифицируются в приложении с индивидуальными паролями (хранятся с солью и хэшируются в базе данных).

Существует очень похожий вопрос, который получил ответ:

в Windows учетные данные хранятся в реестре в месте, защищенном ACL

Однако это не касается аспекта защиты программных файлов, и, кроме того, кажется, что он предполагает более высокий уровень работы с Windows, чем мне сейчас нравится :) Я понятия не имею, как защитить элементы реестра с помощью ACL, ни как я тогда смогу получить доступ к защищенным ключам из моей программы. Простые инструкции для разработчика в незнакомой среде будут с благодарностью!

1 Ответ

2 голосов
/ 09 сентября 2010

Ваш вопрос неясен относительно того, что делает ваше приложение и каковы ваши требования безопасности.Я собираюсь сделать некоторые предположения и дать ответ на их основе.Если эти предположения неверны, пожалуйста, уточните в комментарии, и я обновлю.

Я предполагаю, что у вас есть приложение, которое:

  • хранит конфиденциальные данные в базе данных, хранящейся вустановленная на рабочей станции СУБД
  • установлена ​​на общей рабочей станции
  • каждый пользователь имеет свой собственный логин (не администратор)
  • позволяет различным пользователям входить в систему и взаимодействовать сих данные
  • пользователь запускает приложение, которое подключается к службе
  • служба подключается к базе данных, доставляет данные пользователям
  • служба работает под собственной учетной записью пользователя

Если это правильно, то у вас не должно быть особых проблем.

Служба может работать под любой учетной записью, но было бы достаточно легко запустить ее по одному из стандартов (локальный компьютер илиСетевой сервис).Настройте базу данных так, чтобы только эта учетная запись могла получить к ней доступ.На Sql Server я бы только предоставил этой учетной записи пользователя (и администраторам на коробке) логин и права доступа к базе данных.

Это единственная защита, которая вам нужна, если пользователи не являются администраторами.Теперь, когда веб-интерфейс подключается к службе, пользователь может предоставить имя пользователя и пароль, а служба может выполнять проверку подлинности на основе соленых и хешированных паролей, хранящихся в базе данных.Все это безопасно до тех пор, пока 1) у каждого пользователя есть свой логин 2) связь безопасна (с использованием именованных каналов или SSL) и 3) никакие virii или кейлоггеры не работают под учетными данными администратора.


Вы можете настроить свою службу в зависимости от того, под какой учетной записью она работает, запустив services.msc (или щелкнув правой кнопкой мыши MyComputer и выбрав «Управление» или выбрав «Сервисы» в меню инструментов администратора на панели управления или, возможно,различными способами).

Откройте список служб, щелкните правой кнопкой мыши свое приложение и нажмите «Свойства».Оттуда сделайте так, чтобы это выглядело так: alt text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...