Condividi tramite


Procedura dettagliata: Autenticazione integrata per le app Python con i servizi di Azure

Microsoft Entra ID, se usato con Azure Key Vault, offre un approccio affidabile e sicuro per l'autenticazione delle applicazioni sia per i servizi di Azure che per le piattaforme di terze parti che richiedono chiavi di accesso o credenziali. Questa combinazione elimina la necessità di avere segreti fissati nel codice applicativo, sfruttando invece le identità gestite, il controllo degli accessi in base al ruolo e la gestione centralizzata dei segreti tramite il Key Vault. Questo approccio semplifica la gestione delle identità e migliora il comportamento di sicurezza negli ambienti cloud.

Questa procedura dettagliata illustra questi meccanismi di autenticazione tramite un esempio pratico fornito nel repository GitHub: github.com/Azure-Samples/python-integrated-authentication.

L'esempio illustra come un'applicazione Python può:

  • Eseguire l'autenticazione con Azure con DefaultAzureCredential

  • Accedere ai segreti di Azure Key Vault senza archiviare le credenziali

  • Comunicare in modo sicuro con altri servizi di Azure, ad esempio Archiviazione di Azure, Cosmos DB e altro ancora

Questo articolo fa parte di una serie che fornisce una guida dettagliata su come autenticare un'app Python con Microsoft Entra ID, Azure Key Vault e Azure Queue Storage utilizzando la libreria Azure Python SDK azure-identity.

Parte 1: Sfondo

Anche se molti servizi di Azure si basano esclusivamente sul controllo degli accessi in base al ruolo, mentre altri richiedono l'accesso tramite segreti o chiavi. Tali servizi includono Archiviazione di Azure, database, servizi di intelligenza artificiale di Azure, Key Vault e Hub eventi

Quando si creano applicazioni cloud che interagiscono con questi servizi, gli sviluppatori possono usare il portale di Azure, l'interfaccia della riga di comando o PowerShell per generare e configurare chiavi di accesso specifiche del servizio. Queste chiavi sono associate a criteri di accesso specifici per impedire l'accesso non autorizzato. Tuttavia, questo modello richiede all'applicazione di gestire le chiavi in modo esplicito ed eseguire l'autenticazione separatamente con ogni servizio, un processo noioso e soggetto a errori.

L'incorporamento dei segreti direttamente nel codice o l'archiviazione nei computer di sviluppo rischia di esporli in:

  • Controllo del codice sorgente
  • Ambienti locali non sicuri
  • Registri accidentali o esportazioni di configurazioni accidentali

Azure offre due servizi chiave per migliorare la sicurezza e semplificare l'autenticazione:

  • Azure Key Vault Azure Key Vault offre un archivio sicuro basato sul cloud per i segreti, tra cui chiavi di accesso, stringhe di connessione e certificati. Recuperando segreti da Key Vault solo in fase di esecuzione, le applicazioni evitano di esporre i dati sensibili nel codice sorgente o nei file di configurazione.
  • Con le identità gestite di Microsoft Entra, l'applicazione può eseguire l'autenticazione una sola volta con Microsoft Entra ID. Da qui può accedere ad altri servizi di Azure, tra cui Key Vault, senza gestire direttamente le credenziali.

Questo approccio offre:

  • Codice senza credenziali (nessun segreto nel controllo del codice sorgente)
  • Integrazione perfetta con i servizi di Azure
  • Coerenza dell'ambiente: lo stesso codice viene eseguito in locale e nel cloud con una configurazione minima

Questa procedura dettagliata illustra come usare l'identità gestita di Microsoft Entra e Key Vault insieme nella stessa app. Usando insieme Microsoft Entra ID e Key Vault, l'app non deve mai autenticarsi con i singoli servizi di Azure e può accedere in modo semplice e sicuro a qualsiasi chiave necessaria per i servizi di terze parti.

Importante

Questo articolo usa il termine generico comune "key" per fare riferimento a ciò che vengono archiviati come "segreti" in Azure Key Vault, ad esempio una chiave di accesso per un'API REST. Questo utilizzo non deve essere confuso con la gestione di Key Vault delle chiavi crittografiche , che è una funzionalità separata dai segreti di Key Vault.

Scenario di app cloud di esempio

Per comprendere in modo più approfondito il processo di autenticazione di Azure, prendere in considerazione lo scenario seguente: Un'applicazione Web Flask viene distribuita nel servizio app di Azure. Espone un endpoint API pubblico e non autenticato che restituisce i dati JSON in risposta alle richieste HTTP.

  • Per generare la risposta, l'API richiama un'API di terze parti che richiede una chiave di accesso. Anziché archiviare questa chiave nei file di codice o di configurazione, l'app lo recupera in modo sicuro in fase di esecuzione da Azure Key Vault usando l'identità gestita di Microsoft Entra.

  • Prima di restituire la risposta al client, l'app scrive un messaggio in una coda di archiviazione di Azure per l'elaborazione asincrona. Il messaggio potrebbe rappresentare un'attività, un log o un segnale, anche se l'elaborazione downstream non è l'obiettivo di questo scenario.

Diagramma dello scenario dell'applicazione

Annotazioni

Anche se gli endpoint API pubblici sono in genere protetti dalle proprie chiavi di accesso o meccanismi di autenticazione, questa procedura dettagliata presuppone che l'endpoint sia aperto e non autenticato.

Questa semplificazione consente di isolare i requisiti di autenticazione interni dell'app, ad esempio l'accesso ad Azure Key Vault e Archiviazione di Azure, da eventuali problemi di autenticazione correlati ai client esterni.

Lo scenario è incentrato esclusivamente sul comportamento dell'app e non dimostra o coinvolge un chiamante esterno che esegue l'autenticazione con l'endpoint.