Мы автоматизируем создание шлюзов приложений Azure для новых развертываний группы ресурсов веб-приложения. К сожалению, AppGW, похоже, не поддерживает сертификаты Key Vault напрямую ( ref ), как это делает служба приложений Azure, и похоже, что единственный способ добавить сертификаты (по крайней мере, в Powershell) - через New-AzureRmApplicationGatewaySslCertificate. Этот командлет имеет только параметр «CertificateFile», который требует физического пути к файлу, и я бы действительно предпочел не хранить сертификат на диске ...
В настоящее время мы храним и сертификат, и пароль сертификата в хранилище ключей, и соответствующая часть сценария AppGW делает это:
- Получить пароль экспорта сертификата через Get-AzureKeyVaultSecret (который остается в форме SecureString)
- Получить сам сертификат через Get-AzureKeyVaultCertificate (который также остается в защищенном виде)
Пока все хорошо, данные хранятся в памяти в довольно безопасном формате.
- Преобразование SecretValue шага 1 в открытый текст (eww), поскольку для следующего шага требуется пароль в виде простого текста
- Используя сертификат экспорта сертификата и пароль в виде открытого текста, запишите сертификат в файл PFX на диске (eww)
- Импорт этого файла PFX с использованием New-AzureRmApplicationGatewaySslCertificate
- Создание остальной части AppGW
- Удалить файл PFX
У меня во рту остается неприятный вкус, когда приходится снимать всю защиту с таких вещей, как сертификаты SecureStrings и Key Vault. Я знаю, что AppGW пока не поддерживает сертификаты Key Vault, но я бы согласился хотя бы просто сохранить этот материал в памяти, а не записывать сертификат на диск. Конечно, я просто упускаю что-то очевидное, и есть более безопасный способ сделать это?