Aggiungere un'identità gestita a un tipo di nodo del cluster gestito di Service Fabric

Ogni tipo di nodo in un cluster gestito di Service Fabric è supportato da un set di scalabilità di macchine virtuali. Per consentire l'uso delle identità gestite con un tipo di nodo del cluster gestito, è stata aggiunta una proprietà vmManagedIdentity alle definizioni dei tipi di nodo contenenti un elenco di identità che possono essere usate, userAssignedIdentities. La funzionalità rispecchia il modo in cui le identità gestite possono essere usate in cluster non gestiti, ad esempio usando un'identità gestita con l'estensione del set di scalabilità di macchine virtuali di Azure Key Vault.

Per un esempio di distribuzione di cluster gestiti di Service Fabric che usa l'identità gestita in un tipo di nodo, vedere questi modelli. L'esempio ha due modelli:

  1. Identità gestita e assegnazione di ruolo: modello per creare l'identità gestita e l'assegnazione di ruolo per consentire a Service Fabric RP di assegnare l'identità al set di scalabilità di macchine virtuali del cluster gestito. Questa operazione deve essere distribuita una sola volta prima di usare l'identità gestita nella risorsa del tipo di nodo.

  2. Cluster gestito e tipo di nodo: modello per le risorse del cluster gestito e del tipo di nodo di Service Fabric usando l'identità gestita creata in precedenza.

Nota

Per questa funzionalità sono attualmente supportate solo le identità assegnate dall'utente.

Nota

Vedere Configurare e usare applicazioni con identità gestita in un cluster gestito di Service Fabric per la configurazione dell'applicazione.

Prerequisiti

Prima di iniziare:

  • Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
  • Se si prevede di usare PowerShell, installare l'interfaccia della riga di comando di Azure per eseguire i comandi di riferimento dell'interfaccia della riga di comando.

1. Creare identità e assegnazione di ruolo

Creare un'identità gestita assegnata dall'utente

È possibile definire un'identità gestita assegnata dall'utente nella sezione risorse di un modello di Azure Resource Manager (ARM) per la creazione al momento della distribuzione:

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

o creato tramite PowerShell:

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

Aggiungere un'assegnazione di ruolo con il provider di risorse di Service Fabric

Aggiungere un'assegnazione di ruolo all'identità gestita con l'applicazione provider di risorse di Service Fabric. Questa assegnazione consente al provider di risorse di Service Fabric di assegnare l'identità creata nel passaggio precedente al set di scalabilità di macchine virtuali del cluster gestito. Si tratta di un'azione una sola volta

Ottenere l'entità servizio per l'applicazione del provider di risorse di Service Fabric:

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

Nota

Assicurarsi di essere nella sottoscrizione corretta, l'ID entità cambierà se la sottoscrizione si trova in un tenant diverso.

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

Usare l'ID dell'output precedente come principalId e l'ID definizione del ruolo visualizzato come roleDefinitionId, se applicabile nel modello o nel comando di PowerShell:

Nome definizione ruolo Un ID di definizione del ruolo
Managed Identity Operator (Operatore per identità gestita) f1a07417-d97a-45cb-824c-7a7467783830

Questa assegnazione di ruolo può essere definita nel modello di sezione delle risorse usando l'ID entità e l'ID definizione del ruolo:

{
  "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>"
  }
}

Nota

vmIdentityRoleNameGuid deve essere un GUID valido. Se si distribuisce di nuovo lo stesso modello che include questa assegnazione di ruolo, assicurarsi che il GUID sia uguale a quello originariamente usato o rimuovere questa risorsa come deve essere creata una sola volta.

o creato tramite PowerShell usando l'ID principale e il nome della definizione del ruolo:

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

Distribuire l'identità gestita e l'assegnazione di ruolo.

Eseguire il cmdlet New-AzResourceGroupDeployment per creare l'identità gestita e aggiungere l'assegnazione di ruolo:

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

2. Assegnare l'identità alla risorsa del tipo di nodo

Aggiungere proprietà dell'identità gestita alla definizione del tipo di nodo

Aggiungere infine le vmManagedIdentity proprietà e userAssignedIdentities alla definizione del tipo di nodo del cluster gestito con l'ID risorsa completo dell'identità creata nel primo passaggio. Assicurarsi di usare 2021-05-01 o versione successiva per .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')]"
      ]
    }
  }
}

Distribuire la risorsa del tipo di nodo assegnando l'identità

Eseguire il cmdlet New-AzResourceGroupDeployment per distribuire il modello di cluster gestiti di Service Fabric che assegna l'identità gestita alla risorsa del tipo di nodo.

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

Dopo la distribuzione, l'identità gestita creata è stata aggiunta al set di scalabilità di macchine virtuali del tipo di nodo designato e può essere usata come previsto, proprio come in qualsiasi cluster non gestito.

Risoluzione dei problemi

Se non si aggiunge correttamente un'assegnazione di ruolo, verrà visualizzato l'errore seguente durante la distribuzione:

portale di Azure errore di distribuzione che mostra il client con l'ID applicazione o l'oggetto sfRP non dispone dell'autorizzazione per eseguire l'attività di gestione delle identità

In questo caso, assicurarsi che l'assegnazione di ruolo venga creata correttamente con il ruolo "Operatore identità gestita". L'assegnazione di ruolo è disponibile nella portale di Azure sotto il controllo di accesso della risorsa di identità gestita, come illustrato di seguito.

Proprietà di assegnazione di ruolo per il provider di risorse di Service Fabric nell'identità gestita assegnata dall'utente visualizzata nel portale di Azure

Passaggi successivi