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

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

0
giaour 13 Сен 2021 в 23:18

2 ответа

Лучший ответ

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

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

0
giaour 15 Сен 2021 в 13:13

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

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

[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'))]"
  ]
}

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

-1
SaiKarri-MT 14 Сен 2021 в 10:38