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 nodtypsdefinitioner 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 med hjälp av en hanterad identitet med Azure Key Vault vm-skalningsuppsättningstillägg.

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 service fabric-hanterade kluster- och nodtypsresurser med den hanterade identitet som skapades tidigare.

Anteckning

Endast användartilldelade identiteter stöds för närvarande för den här funktionen.

Krav

Innan du börjar:

  • Om du inte har en Azure-prenumeration kan du skapa 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 Resource Provider-programmet. 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"

Anteckning

Kontrollera att du har rätt prenumeration, huvudnamns-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 som roleDefinitionId i förekommande fall för mallen eller PowerShell-kommandot:

Namn på rolldefinition Rolldefinitions-ID
Hanterad identitetsoperator 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>"
  }
}

Anteckning

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 skapats 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ägg 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 definitionen av nodtyp

Lägg slutligen till vmManagedIdentity egenskaperna och userAssignedIdentities i det hanterade klustrets nodtypdefinition 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 New-AzResourceGroupDeployment-cmdleten 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

Om du inte lägger till en rolltilldelning korrekt kommer följande fel att uppstå vid distributionen:

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

I det här fallet kontrollerar du att rolltilldelningen har skapats med rollen "Hanterad identitetsoperatör". Rolltilldelningen finns på Azure Portal 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 Portal

Nästa steg