Distribuire un'applicazione di Service Fabric con identità gestita assegnata dall'utente
Per distribuire un'applicazione di Service Fabric con identità gestita, l'applicazione deve essere distribuita tramite Azure Resource Manager, in genere con un modello di Azure Resource Manager. Per altre informazioni su come distribuire un'applicazione di Service Fabric tramite Azure Resource Manager, vedere Gestire applicazioni e servizi come risorse di Azure Resource Manager.
Nota
Le applicazioni non distribuite come risorsa di Azure non possono avere identità gestite.
La distribuzione di applicazioni di Service Fabric con identità gestita è supportata con la versione "2019-06-01-preview"
dell'API . È anche possibile usare la stessa versione dell'API per il tipo di applicazione, la versione del tipo di applicazione e le risorse del servizio.
Identità assegnata dall'utente
Per abilitare l'applicazione con identità assegnata dall'utente, aggiungere prima la proprietà identity alla risorsa dell'applicazione con tipo userAssigned e le identità assegnate dall'utente a cui si fa riferimento. Aggiungere quindi una sezione managedIdentities all'interno della sezione properties per la risorsa dell'applicazione che contiene un elenco di nomi descrittivi al mapping principalId per ognuna delle identità assegnate dall'utente. Per altre informazioni sulle identità assegnate dall'utente, vedere Creare, elencare o eliminare un'identità gestita assegnata dall'utente.
Modello di applicazione
Per abilitare l'applicazione con identità assegnata dall'utente, aggiungere prima la proprietà identity alla risorsa dell'applicazione con tipo userAssigned e le identità assegnate dall'utente a cui si fa riferimento, quindi aggiungere un oggetto managedIdentities all'interno della sezione delle proprietà che contiene un elenco di nomi descrittivi al mapping principalId per ogni identità assegnata dall'utente.
{
"apiVersion": "2019-06-01-preview",
"type": "Microsoft.ServiceFabric/clusters/applications",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/clusters/', parameters('clusterName'), '/applicationTypes/', parameters('applicationTypeName'), '/versions/', parameters('applicationTypeVersion'))]",
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
],
"identity": {
"type" : "userAssigned",
"userAssignedIdentities": {
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]": {}
}
},
"properties": {
"typeName": "[parameters('applicationTypeName')]",
"typeVersion": "[parameters('applicationTypeVersion')]",
"parameters": {
},
"managedIdentities": [
{
"name" : "[parameters('userAssignedIdentityName')]",
"principalId" : "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName')), '2018-11-30').principalId]"
}
]
}
}
Nell'esempio precedente il nome della risorsa dell'identità assegnata dall'utente viene usato come nome descrittivo dell'identità gestita per l'applicazione. Gli esempi seguenti presuppongono che il nome descrittivo effettivo sia "AdminUser".
Pacchetto dell'applicazione
Per ogni identità definita nella
managedIdentities
sezione del modello di Azure Resource Manager, aggiungere un<ManagedIdentity>
tag nel manifesto dell'applicazione nella sezione Entità . L'attributoName
deve corrispondere allaname
proprietà definita nellamanagedIdentities
sezione .ApplicationManifest.xml
<Principals> <ManagedIdentities> <ManagedIdentity Name="AdminUser" /> </ManagedIdentities> </Principals>
Nella sezione ServiceManifestImport aggiungere un identityBindingPolicy per il servizio che usa l'identità gestita. Questo criterio esegue il mapping dell'identità
AdminUser
a un nome di identità specifico del servizio che deve essere aggiunto nel manifesto del servizio in un secondo momento.ApplicationManifest.xml
<ServiceManifestImport> <Policies> <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="AdminUser" /> </Policies> </ServiceManifestImport>
Aggiornare il manifesto del servizio per aggiungere managedIdentity all'interno della sezione Resources con il nome corrispondente
ServiceIdentityRef
a nelIdentityBindingPolicy
del manifesto dell'applicazione:ServiceManifest.xml
<Resources> ... <ManagedIdentities DefaultIdentity="WebAdmin"> <ManagedIdentity Name="WebAdmin" /> </ManagedIdentities> </Resources>