Esercitazione: Usare connessioni basate su identità invece di segreti con trigger e associazioni

Questa esercitazione illustra come configurare Funzioni di Azure per connettersi alle code bus di servizio di Azure usando le identità gestite, anziché i segreti archiviati nelle impostazioni dell'app per le funzioni. L'esercitazione è una continuazione dell'esercitazione Creare un'app per le funzioni senza segreti di archiviazione predefiniti nell'esercitazione sulla definizione . Per altre informazioni sulle connessioni basate sull'identità, vedere Configurare una connessione basata su identità.

Anche se le procedure illustrate funzionano in genere per tutti i linguaggi, questa esercitazione supporta attualmente le funzioni della libreria di classi C# in Windows in modo specifico.

In questa esercitazione apprenderai a:

  • Creare uno spazio dei nomi del bus di servizio e una coda
  • Configurare l'app per le funzioni con un'identità gestita.
  • Creare un'assegnazione di ruolo che concede a tale identità l'autorizzazione per la lettura dalla coda bus di servizio.
  • Creare e distribuire un'app per le funzioni con un trigger bus di servizio.
  • Verificare la connessione basata sull'identità al bus di servizio.

Prerequisito

Completare l'esercitazione precedente: Creare un'app per le funzioni con connessioni basate su identità.

Creare uno spazio dei nomi del Bus di servizio e una coda

  1. Nella portale di Azure scegliere Crea una risorsa (+).

  2. Nella pagina Crea una risorsa cercare e selezionare bus di servizio e quindi selezionare Crea.

  3. Nella pagina Informazioni di base usare la tabella seguente per configurare le impostazioni dello spazio dei nomi bus di servizio. Usare i valori predefiniti per le opzioni rimanenti.

    Opzione Valore suggerito Descrizione
    Abbonamento Sottoscrizione in uso Sottoscrizione in cui vengono create le risorse.
    Gruppo di risorse myResourceGroup Gruppo di risorse creato con l'app per le funzioni.
    Nome spazio dei nomi Nome globalmente univoco Spazio dei nomi dell'istanza da cui attivare la funzione. Poiché lo spazio dei nomi è accessibile pubblicamente, è necessario usare un nome univoco a livello globale in Azure. Il nome deve anche avere una lunghezza compresa tra 6 e 50 caratteri, contenere solo caratteri alfanumerici e trattini e non può iniziare con un numero.
    Location myFunctionRegion Area in cui è stata creata l'app per le funzioni.
    Piano tariffario Di base Livello bus di servizio di base.
  4. Selezionare Rivedi e crea. Al termine della convalida, selezionare Crea.

  5. Al completamento della distribuzione, selezionare Vai alla risorsa.

  6. Nel nuovo spazio dei nomi bus di servizio selezionare + Coda per aggiungere una coda.

  7. Immettere myinputqueue come nome della nuova coda e selezionare Crea.

Dopo aver creato una coda, è possibile aggiungere un'assegnazione di ruolo all'identità gestita dell'app per le funzioni.

Configurare il trigger bus di servizio con un'identità gestita

Per usare i trigger bus di servizio con connessioni basate sull'identità, è necessario aggiungere l'assegnazione di ruolo bus di servizio di Azure ricevitore dati all'identità gestita nell'app per le funzioni. Questo ruolo è necessario quando si usano le identità gestite per attivare lo spazio dei nomi bus di servizio. È anche possibile aggiungere il proprio account a questo ruolo, che consente di connettersi allo spazio dei nomi bus di servizio durante il test locale.

Nota

I requisiti del ruolo per l'uso delle connessioni basate sull'identità variano a seconda del servizio e della modalità di connessione. Le esigenze variano in base a trigger, associazioni di input e associazioni di output. Per altre informazioni sui requisiti specifici dei ruoli, vedere la documentazione sul trigger e sull'associazione per il servizio.

  1. Nello spazio dei nomi bus di servizio creato selezionare Controllo di accesso (IAM). Questa pagina consente di visualizzare e configurare chi può accedere alla risorsa.

  2. Selezionare + Aggiungi e selezionare Aggiungi assegnazione di ruolo.

  3. Cercare bus di servizio di Azure Ricevitore dati, selezionarlo e quindi selezionare Avanti.

  4. Nella scheda Membri , in Assegna accesso a, scegliere Identità gestita

  5. Selezionare Seleziona membri per aprire il pannello Seleziona identità gestite.

  6. Verificare che la sottoscrizione sia quella in cui sono state create le risorse in precedenza.

  7. Nel selettore identità gestita scegliere App per le funzioni dalla categoria Identità gestita assegnata dal sistema. L'etichetta dell'app per le funzioni potrebbe avere un numero tra parentesi accanto a esso, che indica il numero di app nella sottoscrizione con identità assegnate dal sistema.

  8. L'app dovrebbe essere visualizzata in un elenco sotto i campi di input. Se non viene visualizzato, è possibile usare la casella Seleziona per filtrare i risultati con il nome dell'app.

  9. Selezionare l'applicazione. Verrà spostato verso il basso nella sezione Membri selezionati. Seleziona Seleziona.

  10. Nella schermata Aggiungi assegnazione di ruolo selezionare Rivedi e assegna. Esaminare la configurazione e quindi selezionare Rivedi e assegna.

È stato concesso all'app per le funzioni l'accesso allo spazio dei nomi bus di servizio usando le identità gestite.

Connettersi al bus di servizio nell'app per le funzioni

  1. Nel portale cercare l'app per le funzioni creata nell'esercitazione precedente o passare a essa nella pagina App per le funzioni.

  2. Nell'app per le funzioni, espandere Impostazionie selezionare Variabili di ambiente.

  3. Nella scheda Impostazioni app selezionare + Aggiungi per creare un'impostazione. Usare le informazioni nella tabella seguente per immettere il nome e il valore per la nuova impostazione:

    Nome valore Descrizione
    ServiceBusConnection__fullyQualifiedNamespace <>SERVICE_BUS_NAMESPACE.servicebus.windows.net Questa impostazione connette l'app per le funzioni al bus di servizio usando una connessione basata sull'identità anziché i segreti.
  4. Selezionare Applica e quindi applica e conferma per salvare le modifiche e riavviare la funzione dell'app.

Nota

Quando si usa app Azure Configurazione o Insieme di credenziali delle chiavi per specificare le impostazioni per le connessioni di identità gestite, i nomi delle impostazioni devono usare un separatore di chiave valido, ad esempio : o /, al posto di __ per assicurarsi che i nomi vengano risolti correttamente.

Ad esempio: ServiceBusConnection:fullyQualifiedNamespace.

Dopo aver preparato l'app per le funzioni per connettersi allo spazio dei nomi bus di servizio usando un'identità gestita, è possibile aggiungere una nuova funzione che usa un trigger bus di servizio al progetto locale.

Aggiungere una funzione attivata bus di servizio

  1. Eseguire il func init comando , come indicato di seguito, per creare un progetto di funzioni in una cartella denominata LocalFunctionProj con il runtime specificato:

    func init LocalFunctionProj --dotnet
    
  2. Passare alla cartella del progetto:

    cd LocalFunctionProj
    
  3. Nella cartella del progetto radice eseguire il comando seguente:

    dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 5.2.0
    

    Questo comando sostituisce la versione predefinita del pacchetto di estensione bus di servizio con una versione che supporta le identità gestite.

  4. Eseguire il comando seguente per aggiungere una funzione attivata bus di servizio al progetto:

    func new --name ServiceBusTrigger --template ServiceBusQueueTrigger 
    

    Questo comando aggiunge il codice per un nuovo trigger bus di servizio e un riferimento al pacchetto di estensione. È necessario aggiungere un'impostazione di connessione dello spazio dei nomi bus di servizio per questo trigger.

  5. Aprire il nuovo file di progetto ServiceBusTrigger.cs e sostituire la ServiceBusTrigger classe con il codice seguente:

    public static class ServiceBusTrigger
    {
        [FunctionName("ServiceBusTrigger")]
        public static void Run([ServiceBusTrigger("myinputqueue", 
            Connection = "ServiceBusConnection")]string myQueueItem, ILogger log)
        {
            log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
        }
    }
    

    Questo esempio di codice aggiorna il nome della coda a myinputqueue, che corrisponde al nome della coda creata in precedenza. Imposta anche il nome della connessione bus di servizio su ServiceBusConnection. Questo nome è lo spazio dei nomi bus di servizio usato dalla connessione ServiceBusConnection__fullyQualifiedNamespace basata su identità configurata nel portale.

Nota

Se si tenta di eseguire le funzioni ora usando func start, si riceverà un errore. Ciò è dovuto al fatto che non si dispone di una connessione basata su identità definita in locale. Se si vuole eseguire la funzione in locale, impostare l'impostazione ServiceBusConnection__fullyQualifiedNamespace dell'app in local.settings.json come è stato fatto nella [sezione precedente](#connect-to-the-service-bus-in-your-function-app). Inoltre, è necessario assegnare il ruolo all'identità dello sviluppatore. Per altre informazioni, vedere Sviluppo locale con connessioni basate su identità.

Nota

Quando si usano Configurazione app di Azure o Key Vault per fornire le impostazioni per le connessioni di Identità gestita, i nomi delle impostazioni devono usare un separatore di chiavi valido, ad esempio : o / invece di __ per garantire che i nomi vengano risolti correttamente.

Ad esempio: ServiceBusConnection:fullyQualifiedNamespace.

Pubblicare il progetto aggiornato

  1. Eseguire il comando seguente per generare localmente i file necessari per il pacchetto di distribuzione:

    dotnet publish --configuration Release
    
  2. Passare alla \bin\Release\netcoreapp3.1\publish sottocartella e creare un file .zip dal relativo contenuto.

  3. Pubblicare il file .zip eseguendo il comando seguente, sostituendo i FUNCTION_APP_NAMEparametri , RESOURCE_GROUP_NAMEe PATH_TO_ZIP in base alle esigenze:

    az functionapp deploy -n FUNCTION_APP_NAME -g RESOURCE_GROUP_NAME --src-path PATH_TO_ZIP
    

Dopo aver aggiornato l'app per le funzioni con il nuovo trigger, è possibile verificare che funzioni usando l'identità.

Convalidare le modifiche

  1. Nel portale cercare Application Insights e selezionare Application Insights in Servizi.

  2. In Application Insights individuare o cercare l'istanza denominata.

  3. Nell'istanza selezionare Metriche attive in Analisi.

  4. Mantenere aperta la scheda precedente e aprire il portale di Azure in una nuova scheda. Nella nuova scheda passare allo spazio dei nomi bus di servizio, selezionare Code dal menu a sinistra.

  5. Selezionare la coda denominata myinputqueue.

  6. Selezionare bus di servizio Explorer dal menu a sinistra.

  7. Inviare un messaggio di test.

  8. Selezionare la scheda Live Metrics (Metriche aperte) e visualizzare l'esecuzione della coda bus di servizio.

Complimenti. Il trigger della coda di bus di servizio è stato configurato correttamente con un'identità gestita.

Pulire le risorse

Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse. Se non si prevede di aver bisogno di queste risorse in futuro, è possibile eliminarle eliminando il gruppo di risorse.

Nel menu del portale di Azure o nella pagina Home selezionare Gruppi di risorse. Quindi, nella pagina Gruppi di risorse selezionare myResourceGroup.

Nella pagina myResourceGroup assicurarsi che le risorse elencate siano quelle da eliminare.

Selezionare Elimina gruppo di risorse, digitare myResourceGroup nella casella di testo per confermare e quindi selezionare Elimina.

Passaggi successivi

In questa esercitazione è stata creata un'app per le funzioni con connessioni basate su identità.

Passare all'articolo successivo per informazioni su come gestire l'identità.