Управление паролями при непрерывном развертывании
Мы хорошо входим в наше развертывание непрерывной среды интеграции с помощью 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 имеет плагин для интеграции с хранилищем. Вы можете использовать это как свой централизованный секретный менеджер.