Более безопасный способ программного импорта сертификата TLS для шлюза приложений Azure - PullRequest
0 голосов
/ 15 января 2019

Мы автоматизируем создание шлюзов приложений Azure для новых развертываний группы ресурсов веб-приложения. К сожалению, AppGW, похоже, не поддерживает сертификаты Key Vault напрямую ( ref ), как это делает служба приложений Azure, и похоже, что единственный способ добавить сертификаты (по крайней мере, в Powershell) - через New-AzureRmApplicationGatewaySslCertificate. Этот командлет имеет только параметр «CertificateFile», который требует физического пути к файлу, и я бы действительно предпочел не хранить сертификат на диске ...

В настоящее время мы храним и сертификат, и пароль сертификата в хранилище ключей, и соответствующая часть сценария AppGW делает это:

  1. Получить пароль экспорта сертификата через Get-AzureKeyVaultSecret (который остается в форме SecureString)
  2. Получить сам сертификат через Get-AzureKeyVaultCertificate (который также остается в защищенном виде)

Пока все хорошо, данные хранятся в памяти в довольно безопасном формате.

  1. Преобразование SecretValue шага 1 в открытый текст (eww), поскольку для следующего шага требуется пароль в виде простого текста
  2. Используя сертификат экспорта сертификата и пароль в виде открытого текста, запишите сертификат в файл PFX на диске (eww)
  3. Импорт этого файла PFX с использованием New-AzureRmApplicationGatewaySslCertificate
  4. Создание остальной части AppGW
  5. Удалить файл PFX

У меня во рту остается неприятный вкус, когда приходится снимать всю защиту с таких вещей, как сертификаты SecureStrings и Key Vault. Я знаю, что AppGW пока не поддерживает сертификаты Key Vault, но я бы согласился хотя бы просто сохранить этот материал в памяти, а не записывать сертификат на диск. Конечно, я просто упускаю что-то очевидное, и есть более безопасный способ сделать это?

1 Ответ

0 голосов
/ 15 января 2019

что мы делаем - сохраняем сертификат в виде строки base64 в keyvault и пароле сертификата и используем шаблон вложенной руки, чтобы получить эти значения во время развертывания и назначить их шлюзу приложения. Таким образом, вам не нужно ничего хранить / тянуть локально. все происходит в облаке в автоматическом режиме.

...