Condividi tramite


Distribuire un'applicazione di Service Fabric con un'identità gestita User-Assigned

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 Resource Manager di Azure. Per altre informazioni su come distribuire l'applicazione 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 API per il tipo di applicazione, la versione del tipo di applicazione e le risorse del servizio.

identità User-Assigned

Per abilitare l'applicazione con identità User-Assigned, 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 proprietà per la risorsa dell'applicazione che contiene un elenco di nomi descrittivi al mapping principalId per ogni identità assegnata 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 per il 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

  1. Per ogni identità definita nella managedIdentities sezione nel modello di Resource Manager di Azure, aggiungere un <ManagedIdentity> tag nel manifesto dell'applicazione nella sezione Entità. L'attributo Name deve corrispondere alla name proprietà definita nella managedIdentities sezione.

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. Nella sezione ServiceManifestImport aggiungere un oggetto 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>
    
  3. Aggiornare il manifesto del servizio per aggiungere un managedIdentity all'interno della sezione Resources con il nome corrispondente all'oggetto ServiceIdentityRefIdentityBindingPolicy nel manifesto dell'applicazione:

    ServiceManifest.xml

      <Resources>
        ...
        <ManagedIdentities DefaultIdentity="WebAdmin">
          <ManagedIdentity Name="WebAdmin" />
        </ManagedIdentities>
      </Resources>
    

Passaggi successivi