Ссылка на идентификатор участника службы Azure AD в шаблоне ARM

#azure #azure-service-fabric #azure-resource-manager

Вопрос:

Есть ли способ получить идентификатор участника службы Azure AD с помощью встроенной функции шаблона ARM? Я ищу эквивалент РУКИ Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider" и рисую пробел.

Контекст: Я следую руководству по развертыванию управляемого кластера Service Fabric с использованием существующего балансировщика нагрузки, и в этом руководстве запрашивается, чтобы вы выполнили команду powershell, чтобы получить идентификатор участника службы поставщика ресурсов, а затем жестко запрограммировали указанный идентификатор в шаблоне ARM. Ожидается, что этот идентификатор будет отличаться в зависимости от арендатора, и один и тот же шаблон будет развернут для нескольких арендаторов.

Комментарии:

1. Нет, вы не можете получить объект AAD из РУКИ. Это разные API. Лучший вариант для вас-передать идентификатор SP в качестве параметра шаблона ARM.

Ответ №1:

Для некоторых ресурсов Azure можно использовать reference функцию шаблона с full параметром для получения свойств идентификации.

Однако общего способа получения идентификатора субъекта-службы в ARM нет. Командлет Get-AzADServicePrincipal powershell требует разрешений на диаграмму Azure AD, которые в настоящее время не могут быть предоставлены назначенным пользователем службам MSIS в шаблонах ARM.

Ответ №2:

Мы можем использовать пространство имен поставщика ресурсов в качестве Microsoft.Компонент обслуживания

Также, можно использовать приведенный ниже способ получения идентификатора принципа, просто нужно передать несколько параметров.

 [reference(concat(resourceId('Microsoft.Web/sites', variables('uniqueResourceNameBase')), '/providers/Microsoft.ManagedIdentity/Identities/default'), '2015-08-31-PREVIEW').principalId]
 

Шаблон ссылки, как показано ниже:

 {
  "type": "Microsoft.KeyVault/vaults",
  "name": "[variables('uniqueResourceNameBase')]",
  "apiVersion": "2016-10-01",
  "location": "[resourceGroup().location]",
  "properties": {
    "sku": {
      "family": "A",
      "name": "standard"
    },
    "tenantId": "[subscription().tenantid]",
    "accessPolicies": [
      {
        "tenantId": "[subscription().tenantid]",
        "objectId": "[reference(concat(resourceId('Microsoft.Web/sites', variables('uniqueResourceNameBase')), '/providers/Microsoft.ManagedIdentity/Identities/default'), '2015-08-31-PREVIEW').principalId]",
        "permissions": {
          "keys": [],
          "secrets": [
            "get"
          ],
          "certificates": []
        }
      }
    ],
    "enabledForDeployment": false,
    "enabledForDiskEncryption": false,
    "enabledForTemplateDeployment": false
  },
  "dependsOn": [
    "[resourceId('Microsoft.Web/sites', variables('uniqueResourceNameBase'))]"
  ]
}
 

Примечание.Измените пространство имен поставщика ресурсов и параметры в соответствии с вашими требованиями.