Безопасные, переносимые зашифрованные значения конфигурации - возможно? - PullRequest
4 голосов
/ 19 февраля 2009

Мне просто любопытно, есть ли у кого-нибудь отличные идеи по этому поводу.

У нас есть много C # windows-сервисов. Каждое приложение установлено на нескольких компьютерах (от 2 до 80, в зависимости от приложения.)

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

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

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

Ответы [ 3 ]

2 голосов
/ 19 февраля 2009

Шифрование DPAPI использует <machineKey> в качестве личного ключа.

Вариант 1) Вы можете обновить это в machine.config каждого сервера и установить machineKey как идентичное. Это имеет большое влияние на сервер, например, с несвязанными приложениями, которые зависят от machineKey.

Вариант 2) Вы можете переопределить <machineKey> в web.config для более узкой области действия.

Проверка сеанса и зашифрованного состояния представления также зависит от <machineKey>, поэтому при наличии идентичных ключей на серверах сеансы и представление состояния будут взаимно читаемыми. Это может быть желательно для веб-фермы идентичных серверов и централизованного хранилища сеансов, но это выходит за рамки первоначального вопроса.

Как: настроить MachineKey в ASP.NET 2.0

0 голосов
/ 19 февраля 2009

Звучит как работа для сертификата X509 .

0 голосов
/ 19 февраля 2009

Я могу прокомментировать хотя бы один аспект вашего вопроса, так как у нас настроен сервис таким образом, где я работаю.

При редактировании / создании конфигурации мы ставим специальный токен в качестве первого символа:

<value>:secret_password</value>

Двоеточие - это специальный токен. Когда служба запускается и считывает конфигурацию, она находит все незашифрованные значения путем поиска токена, шифрует их, а затем перезаписывает обычный текст зашифрованным значением.

Таким образом, это позволяет редактировать файл, сохраняя секреты в секрете.

...