Добавление управляемого удостоверения в тип узла управляемого кластера Service Fabric
Каждому типу узла в кластере Service Fabric в Azure соответствует масштабируемый набор виртуальных машин. Чтобы разрешить использование управляемых удостоверений с типом узла управляемого кластера, в определения типа узла было добавлено свойство vmManagedIdentity
, содержащее список удостоверений, которые могут использоваться, userAssignedIdentities
. Функциональность показывает, как управляемые удостоверения могут использоваться в неуправляемых кластерах, например с помощью управляемого удостоверения с масштабируемым набором виртуальных машин Azure Key Vault.
Пример развертывания управляемого кластера Service Fabric, использующего управляемое удостоверение для типа узла, см. в этих шаблонах. В этом примере есть два шаблона:
Управляемое удостоверение и назначение ролей. Шаблон для создания управляемого удостоверения и назначения ролей, чтобы разрешить точке хранения Service Fabric назначать удостоверение для масштабируемого набора виртуальных машин управляемого кластера. Его следует развертывать только один раз перед использованием управляемого удостоверения в ресурсе типа узла.
Управляемый кластер и тип узла. Шаблон для ресурсов управляемого кластера и типа узла Service Fabric с использованием созданного ранее управляемого удостоверения.
Примечание.
Сейчас для этой функции поддерживаются только удостоверения, назначенные пользователем.
Примечание.
Сведения о настройке и использовании приложений с управляемым удостоверением в управляемом кластере Service Fabric см. в статье "Настройка и использование приложений с управляемым удостоверением".
Необходимые компоненты
Подготовка к работе:
- Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
- При необходимости установите 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. Это назначение позволяет поставщику ресурсов Service Fabric назначить удостоверение, созданное на предыдущем шаге, масштабируемому набору виртуальных машин управляемого кластера. Это одноразовое действие.
Получение субъекта-службы для приложения поставщика ресурсов Service Fabric.
Login-AzAccount
Select-AzSubscription -SubscriptionId <SubId>
Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
Примечание.
Убедитесь, что используется правильная подписка, идентификатор субъекта изменится, если подписка принадлежит другому клиенту.
ServicePrincipalNames : {74cb6831-0dbb-4be1-8206-fd4df301cdc2}
ApplicationId : 74cb6831-0dbb-4be1-8206-fd4df301cdc2
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 в разделе управления доступом к ресурсу управляемого удостоверения, как показано ниже.