Поделиться через


Как добавить управляемое удостоверение в тип узлов управляемого кластера Service Fabric

Каждому типу узла в кластере Service Fabric соответствует масштабируемый набор виртуальных машин. Чтобы разрешить использование управляемых удостоверений для типа узлов управляемого кластера, в определения типов узлов было добавлено свойство vmManagedIdentity, в котором содержится список удостоверений, которые могут быть использованы, userAssignedIdentities. Функциональность зеркально отражает, как можно использовать управляемые удостоверения в неуправляемых кластерах, например, используя управляемое удостоверение с расширением масштабируемого набора виртуальных машин Azure Key Vault.

Пример развертывания управляемого кластера Service Fabric, использующего управляемое удостоверение для типа узла, см. в этих шаблонах. В этом примере есть два шаблона:

  1. Управляемое удостоверение и назначение ролей. Шаблон для создания управляемого удостоверения и назначения ролей, чтобы разрешить точке хранения Service Fabric назначать удостоверение для масштабируемого набора виртуальных машин управляемого кластера. Его следует развертывать только один раз перед использованием управляемого удостоверения в ресурсе типа узла.

  2. Управляемый кластер и тип узла. Шаблон для ресурсов управляемого кластера и типа узла в Service Fabric с использованием заранее созданного управляемого удостоверения.

Примечание.

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

Примечание.

Сведения о настройке и использовании приложений с управляемым удостоверением в управляемом кластере Service Fabric см. в статье "Настройка и использование приложений с управляемым удостоверением".

Предварительные условия

Подготовка к работе:

  • Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
  • Если вы планируете использовать PowerShell, установите Azure CLI для выполнения справочных команд CLI.

1. Создание удостоверения и назначения роли

Создание пользовательского управляемого удостоверения

Назначаемая пользователем управляемая идентичность может быть определена в разделе ресурсов шаблона "Azure Resource Manager" (ARM) для создания при развертывании:

{
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
  "name": "[parameters('userAssignedIdentityName')]",
  "apiVersion": "2023-01-31",
  "location": "[resourceGroup().location]"
}

или создано с помощью PowerShell:

New-AzResourceGroup -Name <managedIdentityRGName> -Location <location>
New-AzUserAssignedIdentity -ResourceGroupName <managedIdentityRGName> -Name <userAssignedIdentityName>

Назначьте роль с помощью поставщика ресурсов Service Fabric

Добавьте назначение роли управляемому удостоверению с помощью приложения Service Fabric Resource Provider. Это назначение позволяет поставщику ресурсов Service Fabric назначить удостоверение, созданное на предыдущем шаге, масштабируемому набору виртуальных машин управляемого кластера. Это одноразовое действие.

Получение принципала службы для приложения поставщика ресурсов Service Fabric.

Login-AzAccount
Select-AzSubscription -SubscriptionId <SubId>
Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"

Примечание.

Убедитесь, что вы используете правильную подписку. Идентификатор пользователя изменится, если подписка находится у другого арендатора.

ServicePrincipalNames : {00001111-aaaa-2222-bbbb-3333cccc4444}
ApplicationId         : 00001111-aaaa-2222-bbbb-3333cccc4444
ObjectType            : ServicePrincipal
DisplayName           : Azure Service Fabric Resource Provider
Id                    : 00000000-0000-0000-0000-000000000000

Используйте идентификатор предыдущих выходных данных в качестве principalId, а идентификатор определения роли ниже в качестве roleDefinitionId, если это применимо к шаблону или команде PowerShell.

Название определения роли Идентификатор определения роли
Оператор управляемого удостоверения f1a07417-d97a-45cb-824c-7a7467783830

Это назначение ролей можно определить в шаблоне раздела ресурсов с помощью идентификатора субъекта и идентификатора определения роли.

{
  "type": "Microsoft.Authorization/roleAssignments",
  "apiVersion": "2022-04-01",
  "name": "[parameters('vmIdentityRoleNameGuid')]",
  "scope": "[concat('Microsoft.ManagedIdentity/userAssignedIdentities', '/', parameters('userAssignedIdentityName'))]",
  "dependsOn": [
    "[concat('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
  ],
  "properties": {
    "roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', 'f1a07417-d97a-45cb-824c-7a7467783830')]",
    "principalId": "<Service Fabric Resource Provider ID>"
  }
}

Примечание.

vmIdentityRoleNameGuid должен быть допустимым уникальным идентификатором. При повторном развертывании того же шаблона, включая это назначение роли, убедитесь, что уникальный идентификатор совпадает с тем, который использовался изначально, или удалите этот ресурс, так как его требуется создать только один раз.

Или можно создать с помощью PowerShell с использованием идентификатора субъекта и имени определения роли.

New-AzRoleAssignment -PrincipalId "<Service Fabric Resource Provider ID>" -RoleDefinitionName "Managed Identity Operator" -Scope "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>"

Развертывание управляемой идентификации и назначения роли

Выполните командлет New-AzResourceGroupDeployment, чтобы создать управляемое удостоверение и добавить назначение роли:

New-AzResourceGroupDeployment -ResourceGroupName <managedIdentityRGName> -TemplateFile ".\MangedIdentityAndSfrpRoleAssignment.json" -TemplateParameterFile ".\MangedIdentityAndSfrpRoleAssignment.Parameters.json" -Verbose

2. Назначить идентификатор ресурсу типа узла

Добавьте свойства управляемой идентификации в определение типа узла

Наконец, добавьте свойства vmManagedIdentity и userAssignedIdentities к определению типа узла управляемого кластера с полным идентификатором ресурса удостоверения, созданного на первом шаге. Обязательно используйте 2021-05-01 или более позднюю версию для apiVersion.

{
  "type": "Microsoft.ServiceFabric/managedClusters/nodeTypes",
  "apiVersion": "2022-01-01",
  "properties": {
    "isPrimary": true,
    "vmInstanceCount": 5,
    "dataDiskSizeGB": 100,
    "vmSize": "Standard_D2_v2",
    "vmImagePublisher": "MicrosoftWindowsServer",
    "vmImageOffer": "WindowsServer",
    "vmImageSku": "2019-Datacenter",
    "vmImageVersion": "latest",
    "vmManagedIdentity": {
      "userAssignedIdentities": [
        "[parameters('userAssignedIdentityResourceId')]"
      ]
    }
  }
}

Развертывание ресурса типа узла, который назначает удостоверение

Выполните командлет New-AzResourceGroupDeployment, чтобы развернуть шаблон управляемых кластеров Service Fabric, который назначает управляемое удостоверение ресурсу типа узла.

New-AzResourceGroupDeployment -ResourceGroupName <sfmcRGName> -TemplateFile ".\SfmcVmMangedIdentity.json" -TemplateParameterFile ".\SfmcVmMangedIdentity.Parameters.json" -Verbose

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

Устранение неполадок

Невозможность правильно добавить назначение роли приведет к следующей ошибке при развертывании:

Ошибка развертывания портала Azure, показывающая клиента с идентификатором объекта или приложения SFRP, у которого нет разрешения на выполнение операции по управлению удостоверениями

В этом случае убедитесь, что назначение роли успешно создано с ролью "Оператор управляемого удостоверения". Назначение роли находится на портале Azure в разделе управления доступом к ресурсу управляемого удостоверения, как показано ниже.

Свойства назначения ролей для поставщика ресурсов Service Fabric в управляемом удостоверении, назначаемом пользователем, показаны на портале Azure

Дальнейшие шаги