Guida introduttiva: Configurare Durable Functions con l'identità gestita

Questa guida introduttiva illustra come configurare un'app Durable Functions usando il provider predefinito Archiviazione di Azure per usare connessioni basate su identità, in modo che l'app possa accedere all'account di archiviazione senza gestire i segreti. Un'identità gestita da Microsoft Entra ID viene gestita dalla piattaforma Azure, non è necessario effettuare il provisioning o ruotare i segreti.

Contenuto dell'articolo:

Annotazioni

L'identità gestita è supportata nelle versioni Durable Functions dalla 2.7.0 in poi.

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

Prerequisiti

Per completare questo avvio rapido, avrai bisogno di:

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

Se non è disponibile un progetto di Durable Functions esistente distribuito in Azure, è consigliabile iniziare con uno degli argomenti di avvio rapido seguenti:

Configurazione di sviluppo locale

Sono disponibili due opzioni per lo sviluppo locale. Usare Azurite per test locali rapidi senza Azure credenziali. Se è necessario testare le connessioni basate sull'identità con un account Archiviazione di Azure reale, usare invece le credenziali dello sviluppatore.

Opzione 1: Usare l'emulatore Archiviazione di Azure

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

Opzione 2: 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 con le risorse Azure. Quindi, quando viene distribuito in Azure, l'app utilizzerà invece la configurazione dell'identità gestita.

Quando si usano le credenziali dello sviluppatore, la connessione tenta di ottenere un token dalle posizioni seguenti, in questo ordine:

  1. Una cache locale condivisa tra le applicazioni Microsoft
  2. Il contesto utente attuale in Visual Studio
  3. Il contesto utente corrente in Visual Studio Code
  4. Il contesto utente corrente nell'interfaccia della riga di comando di Azure

Se nessuna di queste opzioni ha esito positivo, viene visualizzato un errore che indica che l'app non può recuperare un token di autenticazione. Assicurati di aver effettuato l'accesso a uno degli strumenti elencati con un account che abbia accesso al tuo account di archiviazione di Azure.

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

  1. Specificare il nome dell'account 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. Accedi alla risorsa di account di archiviazione di Azure nel portale di Azure.

  3. Selezionare la scheda Controllo di accesso (IAM) e quindi selezionare Aggiungi assegnazione di ruolo.

  4. Assegnare a se stessi ognuno dei ruoli seguenti. Per ogni ruolo selezionare "+ Seleziona membri" e cercare il messaggio di posta elettronica usato per accedere a Visual Studio, Visual Studio Code o il interfaccia della riga di comando di Azure.

    • Collaboratore ai dati della coda di archiviazione
    • Collaboratore ai dati di Storage Blob
    • Contributore dei dati alle tabelle di archiviazione

    Annotazioni

    Questi sono gli stessi tre ruoli necessari per l'identità gestita durante la distribuzione in Azure. Vedere Assegnare i ruoli di accesso all'identità gestita.

    Screenshot dell'assegnazione del ruolo di Collaboratore ai dati di archiviazione a un utente nella pagina di controllo degli accessi del portale di Azure.

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

Abilitare una risorsa di 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 di Storage Blob
  • Contributore dei dati alle tabelle di archiviazione

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

Screenshot dell'assegnazione di ruoli di accesso alle risorse di archiviazione a un'identità gestita nel portale Azure.

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 della variabile di ambiente AzureWebJobsStorage nelle impostazioni delle funzioni dell'applicazione nel portale Azure.

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

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

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

    • Non-Azure cloud: se l'applicazione viene eseguita in un cloud al di fuori di Azure, è necessario aggiungere le tre impostazioni seguenti per fornire URI di servizio specifici (o endpoint) dell'account di archiviazione anziché un nome account.

      • Il nome dell'impostazione: AzureWebJobsStorage__blobServiceUri

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

      • Il nome dell'impostazione: AzureWebJobsStorage__queueServiceUri

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

      • Il nome dell'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 della scheda degli endpoint dell'account di archiviazione che mostra gli URI dei servizi blob, coda e tabelle.

    Annotazioni

    Se si usa Azure per enti pubblici o qualsiasi altro cloud separato dall'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 Develop 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, inserire managedidentity

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

    Screenshot della risorsa identità gestita assegnata all'utente che mostra il valore dell'ID cliente.

    Annotazioni

    Durable Functions non supporta managedIdentityResourceId quando si usa l'identità assegnata dall'utente. Utilizzare invece clientId.

Verificare la configurazione

Per verificare che la configurazione dell'identità gestita funzioni:

  1. Nel portale di Azure, passa all'app delle funzioni e attiva l'orchestrazione delle Durable Functions, per esempio utilizzando una funzione trigger HTTP.
  2. Verificare che l'orchestrazione venga completata correttamente eseguendo una query sull'endpoint di stato o controllando la scheda Monitoraggio .
  3. Se vengono visualizzati errori di autenticazione, verificare che:
    • Tutti e tre i ruoli di "Collaboratore dati di archiviazione" sono assegnati all'identità corretta.
    • L'impostazione AzureWebJobsStorage stringa di connessione viene rimossa.
    • Le AzureWebJobsStorage__accountName impostazioni (o URI del servizio) sono corrette.

Passaggi successivi