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 una coda e uno spazio dei nomi del bus di servizio
Nel portale di Azure scegliere Crea una risorsa (+).
Nella pagina Crea una risorsa cercare e selezionare bus di servizio e quindi selezionare Crea.
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. Selezionare Rivedi e crea. Al termine della convalida, selezionare Crea.
Al completamento della distribuzione, selezionare Vai alla risorsa.
Nel nuovo spazio dei nomi bus di servizio selezionare + Coda per aggiungere una coda.
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.
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.
Selezionare + Aggiungi e selezionare Aggiungi assegnazione di ruolo.
Cercare bus di servizio di Azure Ricevitore dati, selezionarlo e quindi selezionare Avanti.
Nella scheda Membri trovare Assegna l'accesso a e scegliere l'opzione Identità gestita
Selezionare Seleziona i membri per aprire il pannello Seleziona le identità gestite.
Verificare che la Sottoscrizione sia quella in cui sono state create le risorse in precedenza.
Nel selettore Identità gestita scegliere App per le funzioni nella categoria Identità gestita assegnata dal sistema. L'etichetta App per le funzioni potrebbe avere un numero tra parentesi accanto, che indica il numero di app nella sottoscrizione con identità assegnate dal sistema.
L'app dovrebbe essere visualizzata in un elenco sotto i campi di input. Se non viene visualizzata, puoi usare la casella Seleziona per filtrare i risultati con il nome dell'app.
Selezionare l'applicazione. Verrà spostato verso il basso nella sezione Membri selezionati. Selezionare Seleziona.
Nella schermata Aggiungi assegnazione di ruolo selezionare Rivedi e assegna. Rivedere la configurazione, 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
Nel portale cercare l'app per le funzioni creata nell'esercitazione precedente o passare a essa nella pagina App per le funzioni.
Nell'app per le funzioni, espandere Impostazionie selezionare Variabili di ambiente.
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. Selezionare Applica, quindi Applica e Conferma per salvare l'impostazione e riavviare l'app per le funzioni.
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
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
Passare alla cartella del progetto:
cd LocalFunctionProj
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.
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.
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 suServiceBusConnection
. Questo nome è lo spazio dei nomi bus di servizio usato dalla connessioneServiceBusConnection__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
Eseguire il comando seguente per generare localmente i file necessari per il pacchetto di distribuzione:
dotnet publish --configuration Release
Passare alla
\bin\Release\netcoreapp3.1\publish
sottocartella e creare un file .zip dal relativo contenuto.Pubblicare il file .zip eseguendo il comando seguente, sostituendo i
FUNCTION_APP_NAME
parametri ,RESOURCE_GROUP_NAME
ePATH_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
Nel portale cercare
Application Insights
e selezionare Application Insights in Servizi.In Application Insights individuare o cercare l'istanza denominata.
Nell'istanza selezionare Metriche attive in Analisi.
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.
Selezionare la coda denominata
myinputqueue
.Selezionare bus di servizio Explorer dal menu a sinistra.
Inviare un messaggio di test.
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à.