Диспетчер ресурсов Azure. Не удается развернуть Keyvault с помощью службы приложений Microsoft в политике доступа. - PullRequest
1 голос
/ 27 мая 2019

Поэтому я пытаюсь систематизировать всю свою инфраструктуру Azure с помощью конвейеров Azure Devops и шаблонов ARM. Это довольно сложно, но я вижу выгоду, когда развертывание дает мне 20 ресурсов за 5 минут, и все это хорошо!

Однако я столкнулся с проблемой. Я хочу развернуть новый Keyvault. Отметьте, легко! Я хочу сохранить сертификат x509, который является символом подстановки, используемым моими веб-приложениями. Тик легко сделать. Теперь я хочу создать ресурсы сертификатов «Microsoft.Web / Certificates», которые затем можно использовать для создания настраиваемой привязки SSL для моих веб-приложений. Это не удается:

"The service does not have access to '...microsoft.keyvault/vaults/gs-prd1-kv-apps' Key Vault.

Это разумно , что хорошо задокументировано в примере шаблона здесь: https://github.com/Azure/azure-quickstart-templates/tree/master/201-web-app-certificate-from-key-vault. Оказывается, что поставщик ресурсов ** Microsoft.Azure.Websites "не имеет доступа к Keyvault. чтобы обойти это, нужно запустить команду powershell или az cli, чтобы добавить RP в мой новый Keyvault

Set-AzureRmKeyVaultAccessPolicy -VaultName KEY_VAULT_NAME -ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd -PermissionsToSecrets get

Проблема в том, Мне нужно сделать это в конвейере Devops или в шаблоне ARM, и я абсолютно не знаю, как.

Я пытался добавить команду az в новую задачу сборки, но принцип обслуживания, выполняющий конвейер, ТАКЖЕ не имеет правильных разрешений для ее добавления.

Кто-нибудь может помочь? Должен быть способ развертывания Keyvault с сертификатом x509 и назначения этого ресурса веб-приложению?

1 Ответ

0 голосов
/ 30 мая 2019

Я думал, что поделюсь своим рабочим решением этой проблемы.Итак, давайте уточним, что мы хотим развернуть в шаблоне ARM:

  • Новый KeyVault (Microsoft.KeyVault / vaults), у которого есть сертификат x509, сохраненный как секрет в формате pkcs12
  • Новый план обслуживания приложения (Microsoft.Web / serverfarms)
  • Новый веб-сертификат (Microsoft.Web / сертификаты) в приложенииПлан обслуживания, который можно использовать для определения настраиваемого доменного имени с помощью HTTPS.Это сертификат x509, который был помещен в новый KeyVault

. Все это будет работать нормально, за исключением того, что поставщик ресурсов, использованный для создания плана обслуживания приложения, не имеет политики доступа для нового Keyvault ипоэтому не может извлечь сертификат x509.Это задокументировано в образце шаблона, указанном в вопросе.Рекомендуется запустить команду для добавления политики доступа для поставщика ресурсов.Однако, как я заявляю в этом вопросе, мы пытаемся сделать это полностью в рамках шаблона ARM.

Решение состоит в том, чтобы определить политику доступа для поставщика ресурсов в шаблоне ARM.Однако есть две проблемы:

  1. Я не уверен, какой поставщик ресурсов использовать
  2. Я не знаю, как получить ObjectId субъекта службы, используемого этим поставщиком ресурсов

Я получил подсказку от этого СО вопроса и сделал следующее.

1.Создайте новый Keyvault и добавьте к нему сертификат x509 в качестве секрета enter image description here

2.Запустите команду Az CLI, чтобы получить участника службы для «Службы приложений Microsoft Azure»

az ad sp list --display-name "Microsoft Azure App Service"

. Здесь отображается множество свойств службы, включая [objectId], который я могу скопировать для использования.в шаблоне ARM

3.Создайте ресурс политики доступа Keyvault в шаблоне ARM для субъекта службы «Служба приложений Microsoft Azure», используя [objectId] выше.Предоставьте этому основному разрешению «Получить» только секреты.

enter image description here

4.Создайте план обслуживания приложения и новый ресурс веб-сертификата для него enter image description here


Теперь, когда я запускаю шаблон, для которого у участника службы приложений Microsoft Azure есть разрешение на получениесертификат x509 от нового Keyvault и создать ресурс веб-сертификата в плане обслуживания.

...