Condividi tramite


Distribuire un'applicazione di Service Fabric con identità gestita assegnata dal sistema

Nota

L'abilitazione dell'identità per un'app esistente distribuita inizialmente con i cmdlet di Azure non è supportata.

Per accedere alla funzionalità di identità gestita per le applicazioni di Azure Service Fabric, è prima necessario abilitare il servizio token di identità gestita nel cluster. Questo servizio è responsabile dell'autenticazione delle applicazioni di Service Fabric usando le identità gestite e di ottenere i token di accesso per loro conto. Dopo aver abilitato il servizio, è possibile visualizzarlo in Service Fabric Explorer nella sezione Sistema nel riquadro sinistro, in esecuzione sotto il nome fabric:/System/ManagedIdentityTokenService accanto ad altri servizi di sistema.

Nota

La distribuzione di applicazioni di Service Fabric con identità gestite è supportata a partire dalla 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. Il runtime minimo supportato di Service Fabric è 6.5 CU2. Inoltre, l'ambiente di compilazione/pacchetto deve avere anche Service Fabric .NET SDK a CU2 o versione successiva

Identità gestita assegnata dal sistema

Modello di applicazione

Per abilitare l'applicazione con un'identità gestita assegnata dal sistema, aggiungere la proprietà identity alla risorsa dell'applicazione, con il tipo systemAssigned come illustrato nell'esempio seguente:

    {
      "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'))]"
      ],
      "identity": {
        "type" : "systemAssigned"
      },
      "properties": {
        "typeName": "[parameters('applicationTypeName')]",
        "typeVersion": "[parameters('applicationTypeVersion')]",
        "parameters": {
        }
      }
    }

Questa proprietà dichiara (rispettivamente a Azure Resource Manager e ai provider di risorse di Identità gestita e Service Fabric) che questa risorsa deve avere un'identità gestita implicita (system assigned).

Pacchetto dell'applicazione e del servizio

  1. Aggiornare il manifesto dell'applicazione per aggiungere un elemento ManagedIdentity nella sezione Principals contenente una singola voce, come illustrato di seguito:

    ApplicationManifest.xml

    <Principals>
      <ManagedIdentities>
        <ManagedIdentity Name="SystemAssigned" />
      </ManagedIdentities>
    </Principals>
    

    In questo modo l'identità assegnata all'applicazione viene mappata come risorsa a un nome descrittivo, per un'ulteriore assegnazione ai servizi che comprendono l'applicazione.

  2. Nella sezione ServiceManifestImport corrispondente al servizio a cui viene assegnata l'identità gestita aggiungere un elemento IdentityBindingPolicy, come indicato di seguito:

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="SystemAssigned" />
        </Policies>
      </ServiceManifestImport>
    

    Questo elemento assegna l'identità dell'applicazione al servizio; senza questa assegnazione, il servizio non sarà in grado di accedere all'identità dell'applicazione. Nel frammento di codice precedente, l'identità SystemAssigned (che è una parola chiave riservata) viene mappata alla definizione del servizio sotto il nome WebAdmindescrittivo .

  3. Aggiornare il manifesto del servizio per aggiungere un elemento ManagedIdentity all'interno della sezione Resources con il nome corrispondente al valore dell'impostazione ServiceIdentityRef dalla IdentityBindingPolicy definizione nel manifesto dell'applicazione:

    ServiceManifest.xml

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

    Si tratta del mapping equivalente di un'identità a un servizio come descritto in precedenza, ma dal punto di vista della definizione del servizio. L'identità viene a cui fa riferimento il nome descrittivo (WebAdmin), come dichiarato nel manifesto dell'applicazione.

Passaggi successivi