Dela via


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:

  1. 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.

  2. 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.

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:

Distributionsfel i Azure-portalen som visar klienten med SFRP:s objekt-/program-ID som inte har behörighet att utföra identitetshanteringsaktivitet

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.

Egenskaper för rolltilldelning för Service Fabric-resursprovidern för den användartilldelade hanterade identiteten som visas i Azure-portalen

Nästa steg