Обработка паролей в производственной конфигурации для автоматического развертывания

Я встречал здесь похожие вопросы, но, похоже, они не отвечают именно на то, что мне нужно.

Мы используем сценарии Powershell для развертывания наших приложений и информации, такой как пароли, в файлах конфигурации для большинства сред (UAT и т. д.) в виде обычного текста. Это не большая проблема, но когда дело касается PREPROD и PROD, это большая проблема. Итак, у нас есть несколько маркеров в конфигурации, таких как «{{prompt-password}}», которые будут отображать диалоговое окно входа ( Get-Credential ), и человек, выполняющий развертывание, может ввести учетные данные, и развертывание продолжится.

Но на самом деле это не помогает при автоматическом развертывании (имеется в виду развертывание в один клик с помощью таких инструментов, как TeamCity)

Следует ли мне использовать асимметричное шифрование ( http://msdn.microsoft.com/en-us /library/as0w18af.aspx), где пароль зашифрован с использованием открытого ключа, введенного в конфигурации, а закрытый ключ хранится (как описано здесь http://msdn.microsoft.com/en-us /library/tswxhw92.aspx) в «агенте» (например, на виртуальной машине, откуда TeamCity запускает развертывание и которая имеет ограниченный доступ) запускает автоматическое развертывание и может расшифровать пароль? Не очень силен в криптографии и прочем, но похоже ли это на путь? Есть другие предложения?Как люди справляются с таким автоматическим развертыванием?


Обновление:

Хорошо, я реализовал это. Я написал консольное приложение на C #, которое использует библиотеки криптографии. Приложение генерирует ключи:

RSACryptoServiceProvider rsa = GetRsa(containerName);
File.WriteAllText("keys.kez",rsa.ToXmlString(true));

Я также получаю открытый ключ:

File.WriteAllText("public.pke", rsa.ToXmlString(false));

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

15
задан mklement0 26 March 2018 в 13:39
поделиться