Condividi tramite


Guida introduttiva: Configurare Durable Functions con identità gestita

Un'identità gestita dal servizio di gestione degli accessi Microsoft Entra ID consente all'app di accedere ad altre risorse protette di Microsoft Entra, ad esempio un account di archiviazione di Azure, senza gestire manualmente i segreti. L'identità viene gestita dalla piattaforma Azure, quindi non è necessario effettuare il provisioning o ruotare i segreti. Il modo consigliato per autenticare l'accesso alle risorse di Azure consiste nell'usare tale identità.

In questa guida introduttiva si completano i passaggi per configurare un'app Durable Functions usando il provider di archiviazione di Azure predefinito per usare connessioni basate su identità per l'accesso all'account di archiviazione.

Nota

L'identità gestita è supportata nelle versioni dell'estensione Durable Functions 2.7.0 e successive.

Se non si ha un account Azure, creare un account gratuito prima di iniziare.

Prerequisiti

Per completare l'esercitazione introduttiva, sono necessari gli elementi seguenti:

  • Un progetto Durable Functions esistente creato nel portale di Azure o un progetto Durable Functions locale distribuito in Azure.
  • Familiarità con l'esecuzione di un'app Durable Functions in Azure.

Se non è disponibile un progetto Durable Functions esistente distribuito in Azure, è consigliabile iniziare con uno degli argomenti della guida introduttiva seguenti:

Sviluppo locale

Usare l'emulatore di Archiviazione di Azure

Quando si sviluppa in locale, è consigliabile usare Azurite, ovvero l'emulatore locale di Archiviazione di Azure. Configurare l'app per l'emulatore specificando "AzureWebJobsStorage": "UseDevelopmentStorage = true" nel file local.settings.json.

Connessioni basate su identità per lo sviluppo locale

In senso stretto, un'identità gestita è disponibile solo per le app durante l'esecuzione in Azure. Tuttavia, è comunque possibile configurare un'app in esecuzione in locale per usare la connessione basata sull'identità usando le credenziali dello sviluppatore per l'autenticazione nelle risorse di Azure. Quindi, quando viene distribuita in Azure, l'app utilizzerà invece la configurazione dell'identità gestita.

Quando si usano le credenziali per sviluppatori, la connessione tenta di ottenere un token dalle posizioni seguenti, nell'ordine indicato, per l'accesso alle risorse di Azure:

  • Una cache locale condivisa tra le applicazioni Microsoft
  • Contesto utente corrente in Visual Studio
  • Contesto utente corrente in Visual Studio Code
  • Contesto utente corrente nell'interfaccia della riga di comando di Azure

Se nessuna di queste opzioni ha esito positivo, viene visualizzato un errore che informa che l'app non può recuperare il token di autenticazione per le risorse di Azure.

Configurare il runtime per l'uso dell'identità dello sviluppatore locale

  1. Specificare il nome dell'account di archiviazione di Azure in local.settings.json, ad esempio:

    {
       "IsEncrypted": false,
       "Values": {
          "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
       }
    }
    
  2. Passare alla risorsa dell'account di archiviazione di Azure nel portale di Azure, passare alla scheda Controllo di accesso (IAM) e fare clic su Aggiungi assegnazione di ruolo. Trovare i ruoli seguenti:

    • Collaboratore ai dati della coda di archiviazione
    • Collaboratore ai dati del BLOB di archiviazione
    • Collaboratore ai dati della tabella di archiviazione

    Assegnare i ruoli a se stessi facendo clic su "+ Seleziona membri" e trovando il messaggio di posta elettronica nella finestra popup. Questo messaggio di posta elettronica è quello usato per accedere alle applicazioni Microsoft, all'interfaccia della riga di comando di Azure o agli editor nella famiglia visual studio.

    Screenshot che mostra l'assegnazione di accesso all'utente.

Connessioni basate su identità per l'app distribuita in Azure

Abilitare la risorsa identità gestita

Per iniziare, abilitare un'identità gestita per l'applicazione. L'app per le funzioni deve disporre di un'identità gestita assegnata dal sistema o di un'identità gestita assegnata dall'utente. Per abilitare un'identità gestita per l'app per le funzioni e per altre informazioni sulle differenze tra i due tipi di identità, vedere Panoramica delle identità gestite.

Assegnare ruoli di accesso all'identità gestita

Passare alla risorsa di Archiviazione di Azure dell'app nel portale di Azure e assegnare tre ruoli di controllo degli accessi in base al ruolo alla risorsa di identità gestita:

  • Collaboratore ai dati della coda di archiviazione
  • Collaboratore ai dati del BLOB di archiviazione
  • Collaboratore ai dati della tabella di archiviazione

Per trovare la risorsa di identità, selezionare Assegna accesso all'identità gestita e quindi + Seleziona membri

Screenshot che mostra l'assegnazione di accesso all'identità gestita.

Aggiungere la configurazione dell'identità gestita all'app

Prima di poter usare l'identità gestita dell'app, apportare alcune modifiche alle impostazioni dell'app:

  1. Nel portale di Azure, nel menu delle risorse dell'app per le funzioni in Impostazioni selezionare Variabili di ambiente.

  2. Nell'elenco delle impostazioni trovare AzureWebJobsStorage e selezionare l'icona Elimina. Screenshot dell'impostazione di archiviazione predefinita.

  3. Aggiungere un'impostazione per collegare l'account di archiviazione di Azure all'applicazione.

    Usare uno dei metodi seguenti a seconda del cloud in cui viene eseguita l'app:

    • Cloud di Azure: se l'app viene eseguita in Azure globale, aggiungere l'impostazione AzureWebJobsStorage__accountName che identifica un nome di account di archiviazione di Azure. Valore di esempio: mystorageaccount123

    • Cloud non Di Azure: se l'applicazione viene eseguita in un cloud all'esterno di Azure, è necessario aggiungere le tre impostazioni seguenti per fornire URI del servizio (o endpoint) specifici dell'account di archiviazione anziché un nome account.

      • Nome impostazione: AzureWebJobsStorage__blobServiceUri

        Valore di esempio: https://mystorageaccount123.blob.core.windows.net/

      • Nome impostazione: AzureWebJobsStorage__queueServiceUri

        Valore di esempio: https://mystorageaccount123.queue.core.windows.net/

      • Nome impostazione: AzureWebJobsStorage__tableServiceUri

        Valore di esempio: https://mystorageaccount123.table.core.windows.net/

    È possibile ottenere i valori per queste variabili URI nelle informazioni sull'account di archiviazione dalla scheda Endpoint.

    Screenshot dell'esempio di endpoint.

    Nota

    Se si usa Azure per enti pubblici o qualsiasi altro cloud separato da Azure globale, è necessario usare l'opzione che fornisce URI di servizio specifici anziché solo il nome dell'account di archiviazione. Per altre informazioni sull'uso di Archiviazione di Azure con Azure per enti pubblici, vedere Sviluppare usando l'API di archiviazione in Azure per enti pubblici.

  4. Completare la configurazione dell'identità gestita (ricordarsi di fare clic su "Applica" dopo aver apportato le modifiche alle impostazioni):

    • Se si usa un'identità assegnata dal sistema, non apportare altre modifiche.

    • Se si usa un'identità assegnata dall'utente, aggiungere le impostazioni seguenti nella configurazione dell'app:

      • AzureWebJobsStorage__credential, immettere managedidentity

      • AzureWebJobsStorage__clientId, ottenere questo valore GUID dalla risorsa di identità gestita

      Screenshot dell'ID client dell'identità utente.

    Nota

    Durable Functions non supporta managedIdentityResourceId durante l'uso dell'identità assegnata dall'utente. Utilizzare invece clientId.