Управление паролями при непрерывном развертывании

Мы хорошо входим в наше развертывание непрерывной среды интеграции с помощью TeamCity. Когда мы работаем над процессом CI и переходим к непрерывному развертыванию, у нас возникла проблема с тем, как мы управляем производственными паролями. Для других изменений в конфигурации мы используем преобразование Web.Config. Тем не менее, я действительно не хочу испечь производственный пароль в профиле сборки.

Перед CI/CD мы возьмем Web.config, используйте aspnet_regiis для дешифрования строк подключения, изменения пароля и последующего шифрования. Очевидно, что это склонность к ошибкам и вовсе не в духе CI/CD.

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

Спасибо!

Ответ 1

Одним из возможных решений, доступных с TeamCity 7.0, является использование типизированных параметров. Вы можете определить параметр в TeamCity типа password и передать его каким-либо образом в ваш скрипт сборки (либо как переменную окружения, либо как свойство вашего скрипта сборки).

TeamCity хранит значения таких параметров в своих собственных файлах конфигурации и в базе данных в зашифрованном виде. Если пароль появится в журнале сборки или на странице параметров сборки, он будет заменен на ***.

Ответ 2

Используйте конфигурационные преобразования. Вы даже можете создать собственное преобразование, которое может обрабатывать шифрование/дешифрование. Самый простой способ - зашифровать производственные строки в файле release.web.config и использовать преобразование для обработки строк подключения.

http://msdn.microsoft.com/en-us/library/dd465318.aspx

http://sedodream.com/2010/09/09/ExtendingXMLWebconfigConfigTransformation.aspx

Если это не работает для вас, используйте событие postbuild для вызова aspnet_regiis. Если вы решили расширить конфигурацию конфигурации, вы можете с ней сделать НИЖЕ. Ключи шифрования могут находиться на Луне, пока вы можете добраться до них.

Ответ 3

Невозможно определить строки подключения IN iis. Они сильно меняются? Я думаю, что я просто установил их в IIS для сайта, а затем не разворачивал их как часть приложения или, по крайней мере, предпочитал настройки IIS.

Ответ 4

Teamcity имеет плагин для интеграции с хранилищем. Вы можете использовать это как свой централизованный секретный менеджер.