Lägga till en hanterad identitet i en Service Fabric-hanterad klusternodtyp
Varje nodtyp i ett Service Fabric-hanterat kluster backas upp av en VM-skalningsuppsättning. Om du vill tillåta att hanterade identiteter används med en hanterad klusternodtyp har en egenskap vmManagedIdentity
lagts till i nodtypdefinitioner som innehåller en lista över identiteter som kan användas, userAssignedIdentities
. Funktionen speglar hur hanterade identiteter kan användas i icke-hanterade kluster, till exempel att använda en hanterad identitet med tillägget för vm-skalningsuppsättningar i Azure Key Vault.
Ett exempel på en Service Fabric-hanterad klusterdistribution som använder hanterad identitet på en nodtyp finns i dessa mallar. Exemplet har två mallar:
Hanterad identitet och rolltilldelning: Mall för att skapa den hanterade identiteten och rolltilldelningen så att Service Fabric RP kan tilldela identiteten till det hanterade klustrets VM-skalningsuppsättning. Detta bör bara distribueras en gång innan du använder den hanterade identiteten på nodtypresursen.
Hanterat kluster och nodtyp: Mall för det hanterade service fabric-klustret och nodtypresurserna med den hanterade identitet som skapades tidigare.
Kommentar
Endast användartilldelade identiteter stöds för närvarande för den här funktionen.
Kommentar
Se Konfigurera och använda program med hanterad identitet i ett Service Fabric-hanterat kluster för programkonfiguration.
Förutsättningar
Innan du börjar:
- Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
- Om du planerar att använda PowerShell installerar du Azure CLI för att köra CLI-referenskommandon.
1. Skapa identitets- och rolltilldelning
Skapa en användartilldelad hanterad identitet
En användartilldelad hanterad identitet kan definieras i resursavsnittet i en Arm-mall (Azure Resource Manager) för skapande vid distribution:
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"name": "[parameters('userAssignedIdentityName')]",
"apiVersion": "2023-01-31",
"location": "[resourceGroup().location]"
}
eller skapas via PowerShell:
New-AzResourceGroup -Name <managedIdentityRGName> -Location <location>
New-AzUserAssignedIdentity -ResourceGroupName <managedIdentityRGName> -Name <userAssignedIdentityName>
Lägga till en rolltilldelning med Service Fabric-resursprovidern
Lägg till en rolltilldelning till den hanterade identiteten med service fabric-resursproviderprogrammet. Med den här tilldelningen kan Service Fabric-resursprovidern tilldela identiteten, som skapades i föregående steg, till det hanterade klustrets VM-skalningsuppsättning. Det här är en engångsåtgärd
Hämta tjänstens huvudnamn för Service Fabric Resource Provider-programmet:
Login-AzAccount
Select-AzSubscription -SubscriptionId <SubId>
Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
Kommentar
Kontrollera att du har rätt prenumeration, huvud-ID:t ändras om prenumerationen finns i en annan klientorganisation.
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
Använd ID: t för föregående utdata som principalId och rolldefinitions-ID:t nedan som roleDefinitionId i förekommande fall i mallen eller PowerShell-kommandot:
Namn på rolldefinition | Rolldefinitions-ID |
---|---|
Operatör för hanterad identitet | f1a07417-d97a-45cb-824c-7a7467783830 |
Den här rolltilldelningen kan definieras i resursavsnittsmallen med hjälp av huvudnamns-ID och rolldefinitions-ID:
{
"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>"
}
}
Kommentar
vmIdentityRoleNameGuid ska vara ett giltigt GUID. Om du distribuerar samma mall igen, inklusive den här rolltilldelningen, kontrollerar du att GUID:t är samma som det som ursprungligen användes eller tar bort den här resursen eftersom den bara behöver skapas en gång.
eller skapas via PowerShell med huvud-ID och rolldefinitionsnamn:
New-AzRoleAssignment -PrincipalId "<Service Fabric Resource Provider ID>" -RoleDefinitionName "Managed Identity Operator" -Scope "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>"
Distribuera hanterad identitet och rolltilldelning.
Kör cmdleten New-AzResourceGroupDeployment för att skapa den hanterade identiteten och lägga till rolltilldelningen:
New-AzResourceGroupDeployment -ResourceGroupName <managedIdentityRGName> -TemplateFile ".\MangedIdentityAndSfrpRoleAssignment.json" -TemplateParameterFile ".\MangedIdentityAndSfrpRoleAssignment.Parameters.json" -Verbose
2. Tilldela identitet till nodtypresursen
Lägga till egenskaper för hanterad identitet i nodtypsdefinition
Lägg slutligen till vmManagedIdentity
egenskaperna och userAssignedIdentities
i det hanterade klustrets nodtypsdefinition med det fullständiga resurs-ID:t för identiteten som skapades i det första steget. Se till att använda 2021-05-01 eller senare för 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')]"
]
}
}
}
Distribuera nodtypresursen som tilldelar identiteten
Kör cmdleten New-AzResourceGroupDeployment för att distribuera mallen för hanterade Service Fabric-kluster som tilldelar den hanterade identiteten till nodtypresursen.
New-AzResourceGroupDeployment -ResourceGroupName <sfmcRGName> -TemplateFile ".\SfmcVmMangedIdentity.json" -TemplateParameterFile ".\SfmcVmMangedIdentity.Parameters.json" -Verbose
Efter distributionen har den skapade hanterade identiteten lagts till i den avsedda nodtypens VM-skalningsuppsättning och kan användas som förväntat, precis som i alla icke-hanterade kluster.
Felsökning
Det går inte att lägga till en rolltilldelning korrekt med följande fel vid distributionen:
I det här fallet kontrollerar du att rolltilldelningen har skapats med rollen "Hanterad identitetsoperator". Rolltilldelningen finns på Azure-portalen under åtkomstkontroll av den hanterade identitetsresursen enligt nedan.