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