Рекомендации по развертыванию строки подключения ASP.NET - PullRequest
5 голосов
/ 15 октября 2010

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

  1. Оставьте строки подключения в web.config и используйте преобразование XDT / msdeploy, чтобы заменить их настройками в соответствии с моей активной конфигурацией сборки (например, файлом web.PublicTest.config). Моя проблема заключается в том, что я объединяю и хороню несколько настроек, относящихся к серверу, в глобально идентичный файл со многими элементами конфигурации. Кроме того, я не могу совместно использовать определения строк подключения между несколькими приложениями однорангового уровня.

  2. Укажите значение configSource = "DeveloperLocalConnectionStrings.config" для строк подключения в web.config, и XDT преобразует это значение, чтобы оно указывало на один из нескольких специфичных для среды файлов в моей кодовой базе. Моя проблема с этим заключается в том, что я отправляю пароли для всех моих сред всем адресатам (в дополнение к SVN, конечно) и имею неиспользуемые разделы конфигурации, сидящие на серверах, ожидающих случайного использования.

  3. Конкретные строки подключения в файле machine.config, а не web.config. Проблема: кто, черт возьми, ожидает найти строки подключения в machine.config, и вероятность неожиданных конфликтов имен в результате высока.

  4. Укажите configSource = "LocalConnectionStrings.config", не преобразуйте значение и измените XML-файл проекта, чтобы исключить развертывание конфигурации строки подключения. http://msdn.microsoft.com/en-us/library/ee942158.aspx#can_i_exclude_specific_files_or_folders_from_deployment - Это лучшее решение, которое я нашел для удовлетворения моих потребностей в проприетарном (нераспространенном) веб-приложении, но я параноидально, что однажды один из членов команды придет и скопирует производственный сайт для проверки на наличие почему-то и вуаля! Производственная база данных в настоящее время изменяется во время UAT. (Обновление: я обнаружил, что не могу использовать публикацию одним щелчком в этом сценарии, только командную строку msdeploy с параметром -skip. Исключение файла, как указано выше, аналогично установке «Нет» для действия компиляции вместо « Содержимое ", в результате чего пакет удаляется из целевого объекта развертывания.)

  5. Подключите пакет развертывания, чтобы запросить строку подключения, если она еще не установлена ​​(я пока не знаю, как это сделать, но понимаю, что это возможно). Это будет иметь результаты, аналогичные # 4 выше.

  6. Укажите configSource = ".. \ ConnectionStrings.config". Было бы здорово для моих нужд, так как я мог бы поделиться конфигурацией среди приложений, которые я выбрал, и в моем каталоге приложений не было бы ничего конкретного компьютера. К сожалению, родительские пути не разрешены в этом атрибуте (как, например, для 'appSettings file = "" "- обратите внимание также, что вы можете легко использовать file = внутри ссылки configSource =).

p.s. некоторые из этих решений обсуждаются здесь: Файл конфигурации ASP.Net -> Строки подключения для нескольких разработчиков и серверов развертывания

Ответы [ 3 ]

3 голосов
/ 19 октября 2010

При использовании SQL Server вы также можете использовать Integrated Security / SSPI и добавить логин компьютера WebServer на Sql Server.

Таким образом, вам не нужно открывать что-либо в файле web.config, и вы можете назначать роли для этого имени входа, как и любому другому пользователю БД.

Хотя вы должны понимать последствия и соображения безопасности, которые необходимо принять, потому что любой вредоносный код, выполняемый на ЭТОМ компьютере, будет иметь доступ к Sql Server.

с уважением Ole

1 голос
/ 15 октября 2010
  1. Используйте имя хоста в качестве ключа для строки подключения, чтобы вы могли выбирать источник данных автоматически. Убедитесь, что процедура выбора не содержит ошибок (измените имя хоста - проверьте!) ...

  2. Не помещайте его в файл web.config, запишите ini-файл, чтобы не было кодировки XML.

  3. Зашифруйте пароль с помощью закрытого / открытого ключа (RSA / PGP). Никогда не используйте открытый текст или симметричный ключ, который так же плох.

0 голосов
/ 15 октября 2010

Проверьте мой следующий пост в блоге: Защита ключей машины asp.net и строк подключения

Если вы используете ответ Quandary, используйте ключ, которого нет в папке сайта, как это делает asp.net с защищенными разделами конфигурации.

Мы вручную одобряем изменения в файле web.config, которые переходят в стадию / производство. Мы используем интегрированный вместо имени пользователя, где это возможно, но вариант, который мы использовали в последнем случае, это просто иметь заполнители для имени пользователя / паролей в SVN.

В прошлом мы использовали отдельные файлы конфигурации, но у нас возникли другие проблемы с модификациями web.config, поэтому в последнее время мы заблокировали их в одном файле.

...