Я думал, что поделюсь своим рабочим решением этой проблемы.Итак, давайте уточним, что мы хотим развернуть в шаблоне ARM:
- Новый KeyVault (Microsoft.KeyVault / vaults), у которого есть сертификат x509, сохраненный как секрет в формате pkcs12
- Новый план обслуживания приложения (Microsoft.Web / serverfarms)
- Новый веб-сертификат (Microsoft.Web / сертификаты) в приложенииПлан обслуживания, который можно использовать для определения настраиваемого доменного имени с помощью HTTPS.Это сертификат x509, который был помещен в новый KeyVault
. Все это будет работать нормально, за исключением того, что поставщик ресурсов, использованный для создания плана обслуживания приложения, не имеет политики доступа для нового Keyvault ипоэтому не может извлечь сертификат x509.Это задокументировано в образце шаблона, указанном в вопросе.Рекомендуется запустить команду для добавления политики доступа для поставщика ресурсов.Однако, как я заявляю в этом вопросе, мы пытаемся сделать это полностью в рамках шаблона ARM.
Решение состоит в том, чтобы определить политику доступа для поставщика ресурсов в шаблоне ARM.Однако есть две проблемы:
- Я не уверен, какой поставщик ресурсов использовать
- Я не знаю, как получить ObjectId субъекта службы, используемого этим поставщиком ресурсов
Я получил подсказку от этого СО вопроса и сделал следующее.
1.Создайте новый Keyvault и добавьте к нему сертификат x509 в качестве секрета
2.Запустите команду Az CLI, чтобы получить участника службы для «Службы приложений Microsoft Azure»
az ad sp list --display-name "Microsoft Azure App Service"
. Здесь отображается множество свойств службы, включая [objectId], который я могу скопировать для использования.в шаблоне ARM
3.Создайте ресурс политики доступа Keyvault в шаблоне ARM для субъекта службы «Служба приложений Microsoft Azure», используя [objectId] выше.Предоставьте этому основному разрешению «Получить» только секреты.
4.Создайте план обслуживания приложения и новый ресурс веб-сертификата для него
Теперь, когда я запускаю шаблон, для которого у участника службы приложений Microsoft Azure есть разрешение на получениесертификат x509 от нового Keyvault и создать ресурс веб-сертификата в плане обслуживания.