Sommario
La revisione della sicurezza di Contoso Retail ha individuato quattro lacune nei controlli che lasciavano esposti i carichi di lavoro serverless: trigger HTTP non autenticati, stringhe di connessione in chiaro nelle impostazioni dell'applicazione, assenza di restrizioni di rete in ingresso sugli endpoint delle app per le funzioni e credenziali codificate in modo statico nelle risorse di connessione condivise delle app per la logica. Questo modulo ha risolto ogni gap usando controlli organizzati intorno a tre livelli di sicurezza.
Esaminare le impostazioni configurate
Il livello di autenticazione, che controlla chi può richiamare un'app per le funzioni, è stato risolto tramite l'autenticazione di Servizio app di Azure. È stato configurato Microsoft Entra ID come provider di identità EasyAuth usando l'impostazione Require authentication per bloccare le richieste non autenticate prima dell'esecuzione del codice della funzione. I livelli di autorizzazione delle funzioni forniscono un livello secondario: chiavi host per l'accesso a livello di app, chiavi di funzione per restrizione per funzione e livello anonimo riservato per gli endpoint protetti da un gateway upstream.
Il livello di identità, che controlla quale identità assume l'app per le funzioni quando effettua chiamate ai servizi downstream, è stato gestito mediante l'identità gestita assegnata dal sistema. Con l'identità gestita attivata e i ruoli RBAC appropriati assegnati, le stringhe di connessione non vengono più memorizzate nelle impostazioni dell'applicazione. Per i modelli di orchestrazione dell'IA in cui le app per funzioni richiamano gli endpoint di Azure OpenAI, il ruolo Utente OpenAI di Servizi cognitivi sostituisce completamente l'archiviazione delle chiavi API. I riferimenti a Key Vault con la sintassi @Microsoft.KeyVault(SecretUri=...) estendono questo schema a qualsiasi impostazione applicativa che in precedenza conteneva un valore segreto.
Il livello di isolamento della rete, che controlla ciò che può raggiungere l'endpoint della funzione, è stato risolto tramite restrizioni IP in ingresso, endpoint privati per le app per le funzioni nel piano Elastic Premium o Dedicato e integrazione della rete virtuale per il traffico in uscita. Lo stesso modello a tre livelli è stato applicato alle App per la logica, con il piano Standard che offre l'integrazione con la rete virtuale, endpoint privati e isolamento single-tenant che il piano Consumption non supporta. Le impostazioni Input sicuri e Output sicuri nelle singole azioni di un'app per la logica impediscono che i dati sensibili vengano visualizzati nella cronologia delle esecuzioni.