Configurare l'autenticazione e l'autorizzazione per le app Function

Completato

Un'app per le funzioni esposta come endpoint HTTP senza autenticazione è direttamente accessibile a qualsiasi client che individua l'URL. Funzioni di Azure non applica l'autenticazione per impostazione predefinita. La piattaforma considera attendibile l'applicazione per implementarla. Per le funzioni di elaborazione degli ordini di Contoso Retail, che ricevono chiamate in ingresso da sistemi partner esterni, l'impostazione predefinita è il punto di partenza errato.

Informazioni sull'autenticazione Servizio app di Azure

L'autenticazione di Servizio app di Azure App, comunemente nota come EasyAuth, è un middleware di autenticazione integrato che viene eseguito come componente separato sulla stessa piattaforma dell'app per le funzioni. Se abilitata, ogni richiesta HTTP in ingresso passa attraverso il livello di autenticazione prima dell'esecuzione del codice della funzione. EasyAuth convalida i token, gestisce le sessioni autenticate e inserisce le informazioni sull'identità nelle intestazioni della richiesta. Non è necessario aggiungere librerie di autenticazione al codice della funzione o modificare alcuna logica di funzione.

EasyAuth supporta più provider di identità: Microsoft Entra ID, Facebook, Google, X, GitHub e qualsiasi provider compatibile con OpenID Connect. Per i carichi di lavoro aziendali, Microsoft Entra ID è la scelta corretta. Quando si configura Microsoft Entra come provider, EasyAuth convalida il token di connessione per ogni richiesta nel tenant. Qualsiasi richiesta senza un token valido viene arrestata a livello di middleware.

Note

L'abilitazione di EasyAuth reindirizza automaticamente tutte le richieste in ingresso a HTTPS, indipendentemente dalle impostazioni di imposizione HTTPS esistenti dell'app per le funzioni. I token di autenticazione non vengono mai trasmessi tramite connessioni HTTP non crittografate.

Configurare Microsoft Entra ID come provider di identità

Per configurare l'autenticazione Microsoft Entra ID, passare a Autenticazione nella schermata delle impostazioni dell'app per le funzioni e aggiungere Microsoft Entra ID come provider di identità. Azure supporta due modalità di configurazione:

  • Configurazione rapida: Azure crea automaticamente una nuova registrazione dell'app nel tenant Microsoft Entra associato alla sottoscrizione. Questo è il percorso più rapido per le implementazioni greenfield in cui non è richiesta alcuna registrazione preesistente. La registrazione è limitata alla tua app per le funzioni e viene configurata automaticamente con gli URI di reindirizzamento corretti.
  • Configurazione avanzata: si specificano una registrazione di app esistente, l'ID dell'applicazione (client) e l'URL dell'autorità di emissione (l'endpoint del tenant Microsoft Entra). Usare questa modalità quando la registrazione dell'app viene gestita centralmente dal team di identità, quando è necessario configurare attestazioni o autorizzazioni API specifiche o quando la funzione deve essere visualizzata come applicazione aziendale nota nella directory.

Dopo aver configurato il provider di identità, EasyAuth applica l'autenticazione in base all'azione da eseguire quando la richiesta non è autenticata :

  • Richiedi autenticazione: qualsiasi richiesta senza un token di connessione Microsoft Entra valido viene rifiutata con una risposta 401 o reindirizzata alla pagina di accesso del provider di identità. Il codice della funzione non viene mai eseguito per le richieste non autenticate. Questa è l'impostazione corretta per le app per le funzioni che devono accettare solo chiamate da chiamanti autenticati.
  • Consenti richieste non autenticate: le richieste passano alla funzione indipendentemente dallo stato di autenticazione. EasyAuth convalida comunque i token quando sono presenti e inserisce intestazioni di identità, ma non blocca i chiamanti non autenticati. Usare questa modalità quando la funzione stessa gestisce le decisioni di autenticazione, ad esempio quando deve rispondere in modo diverso alle richieste anonime e autenticate.

Per i trigger HTTP in ingresso di Contoso Retail, che devono accettare solo chiamate dai sistemi partner che contengono un token di Microsoft Entra valido, Richiedi autenticazione è l'impostazione corretta. Non sono necessarie modifiche al codice della funzione.

Important

Per impostazione predefinita, qualsiasi utente nel tenant Microsoft Entra può ottenere un token per l'applicazione e chiamare le funzioni autenticate. Se è necessario limitare l'accesso a un gruppo, a un'applicazione o a un set di utenti specifico, configurare la registrazione dell'app in Microsoft Entra per richiedere l'assegnazione, assegnare solo le identità che si vuole consentire.

Informazioni sui livelli di autorizzazione delle funzioni

Oltre a EasyAuth, Funzioni di Azure include il proprio meccanismo di autorizzazione leggero: livelli di autorizzazione delle funzioni. Questo meccanismo usa le chiavi API per controllare l'accesso agli endpoint di funzione e funziona indipendentemente da EasyAuth.

I livelli di autorizzazione vengono impostati per funzione o a livello di app per le funzioni:

  • Anonimo: nessuna chiave API necessaria. Qualsiasi chiamante può richiamare la funzione senza una chiave. Usare questo livello solo quando EasyAuth o un gateway upstream protegge l'endpoint. Una funzione anonima senza livello di autenticazione upstream è un endpoint HTTP completamente aperto.
  • Funzione: richiede una chiave specifica per tale singola funzione. Ogni funzione nell'app può avere un proprio set di chiavi. Un chiamante con una chiave di una funzione non può richiamare altre funzioni nella stessa app.
  • Host: richiede la chiave host, condivisa tra tutte le funzioni nell'app per le funzioni. Un chiamante con la chiave host può richiamare qualsiasi funzione nell'app. La chiave host viene chiamata anche chiave di amministratore quando viene usata per le operazioni amministrative.

Le chiavi di funzione non sono un sostituto dell'autenticazione basata sull'identità. Le chiavi API sono stringhe statiche che possono essere estratte dal codice o dalla configurazione e condivise inavvertitamente. Per le app per le funzioni di produzione in cui EasyAuth è configurato con Microsoft Entra ID, i livelli di autorizzazione delle funzioni forniscono una difesa approfondita, ovvero un livello secondario che richiede al chiamante di presentare sia una chiave valida che un token di identità valido.

Important

Non usare il livello di autorizzazione Anonimo senza un livello di autenticazione upstream, ad esempio EasyAuth o Gestione API di Azure. Una funzione anonima senza protezione è un endpoint HTTP completamente aperto su Internet pubblico.

Assegnare un'identità gestita per le connessioni in uscita

Il secondo gap di Contoso Retail, ovvero le stringhe di connessione di Cosmos DB archiviate come impostazioni dell'applicazione di testo normale, rappresenta un problema di gestione delle credenziali. Le impostazioni dell'applicazione in un'app per funzioni sono visibili a chiunque abbia accesso in lettura alla schermata di configurazione di App Service. Una stringa di connessione in testo semplice nelle impostazioni dell'applicazione costituisce un percorso diretto che porta dall'accesso alla configurazione dell'app per le funzioni all'accesso completo al database a valle.

Le identità gestite consentono di risolvere questo problema assegnando all'app per le funzioni un'identità Microsoft Entra ID che Azure gestisce automaticamente. L'app per funzioni si autentica ai servizi Azure downstream usando questa identità: non è necessaria alcuna stringa di connessione, né alcuna credenziale da archiviare, rinnovare o esporre accidentalmente.

Per abilitare un'identità gestita assegnata dal sistema, passare a Identità nelle impostazioni dell'app per le funzioni e impostare Stato su . Azure crea un service principal per la Function app nel tenant di Microsoft Entra. Si assegna quindi all'entità servizio il ruolo appropriato per ogni risorsa downstream:

Servizio downstream Ruolo consigliato
Azure Cosmos DB, un servizio di database distribuito globale di Microsoft Contributore dati integrato di Cosmos DB
Bus di servizio di Azure Mittente dati del bus di servizio o Ricevitore dati del bus di servizio
Archiviazione di Azure Collaboratore dati BLOB di archiviazione o Collaboratore dati coda di archiviazione
Azure Key Vault (Archivio chiavi di Azure) Utente dei segreti di Key Vault
Azure OpenAI Utente di Servizi Cognitivi OpenAI

Note

Le app per le funzioni fungono sempre più da orchestratori di agenti di IA, coordinando le chiamate ai modelli di Azure OpenAI, agli endpoint di Azure AI Foundry o alle distribuzioni personalizzate di prompt flow. Quando un'app per funzioni richiama un endpoint di Azure OpenAI, l'identità gestita con il ruolo Cognitive Services OpenAI User è la modalità di autenticazione corretta. Ciò elimina l'archiviazione delle chiavi API nelle impostazioni dell'applicazione e garantisce che l'accesso all'endpoint del modello sia controllato e verificabile tramite Azure RBAC.

Con l'identità gestita abilitata e i ruoli assegnati, aggiornare ogni chiamata al servizio downstream nel codice della funzione per usare DefaultAzureCredential dall'SDK Azure Identity anziché una stringa di connessione. La credenziale rileva automaticamente l'identità gestita dell'app per le funzioni in runtime. Per le configurazioni di trigger e binding che fanno riferimento ai servizi Azure — account di archiviazione per i trigger di coda e bus di servizio per i trigger di argomento — la proprietà di connessione nella configurazione della funzione supporta anche l’uso dell’identità gestita tramite connessioni basate sull’identità anziché tramite valori di stringa di connessione.