Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'approccio consigliato per autenticare un'app ospitata Azure in altre risorse di Azure consiste nell'usare un'identità managed identity. Questo approccio è supportato per la maggior parte dei servizi Azure, incluse le app ospitate in Azure App Service, Azure Container Apps e Azure Virtual Machines. Altre informazioni sulle diverse tecniche e approcci di autenticazione sono disponibili nella pagina di panoramica dell'autenticazione . Nelle sezioni successive si apprenderà quanto descritto di seguito:
- Concetti essenziali relativi all'identità gestita
- Come creare un'identità gestita assegnata dal sistema per l'app
- Come assegnare ruoli all'identità gestita assegnata dal sistema
- Come eseguire l'autenticazione usando l'identità gestita assegnata dal sistema dal codice dell'app
Concetti essenziali relativi all'identità gestita
Un'identità gestita consente all'app di connettersi in modo sicuro ad altre risorse Azure senza usare chiavi segrete o altri segreti dell'applicazione. Internamente, Azure tiene traccia dell'identità e delle risorse a cui è consentito connettersi. Azure usa queste informazioni per ottenere automaticamente token di Microsoft Entra per consentire all'app di connettersi ad altre risorse Azure.
Esistono due tipi di identità gestite da considerare durante la configurazione dell'app ospitata:
- Identità gestita assegnata dal sistema le identità gestite assegnate dal sistema vengono abilitate direttamente su una risorsa di Azure e sono associate al suo ciclo di vita. Quando la risorsa viene eliminata, Azure elimina automaticamente l'identità per te. Le identità assegnate dal sistema offrono un approccio minimalista all'uso delle identità gestite.
- Assegnato dall'utente, le identità gestite sono create come risorse autonome di Azure e offrono maggiore flessibilità e funzionalità. Sono ideali per soluzioni che coinvolgono più risorse Azure che devono condividere la stessa identità e le stesse autorizzazioni. Ad esempio, se più macchine virtuali devono accedere allo stesso set di risorse Azure, un'identità gestita assegnata dall'utente offre la riutilizzabilità e la gestione ottimizzata.
Suggerimento
Altre informazioni sulla selezione e sulla gestione delle identità gestite assegnate dal sistema e assegnate dall'utente sono disponibili nell'articolo Raccomandazioni sulle procedure consigliate sulle identità gestite .
Le sezioni precedenti descrivono i passaggi per abilitare e usare un'identità gestita assegnata dal sistema per un'app ospitata Azure. Se è necessario usare un'identità gestita assegnata dall'utente, vedere l'articolo identità gestite assegnate dall'utente per altre informazioni.
Abilitare un'identità gestita assegnata dal sistema nella risorsa di hosting Azure
Per iniziare a usare un'identità gestita assegnata dal sistema con l'app, abilitare l'identità nella risorsa Azure che ospita l'app, ad esempio un'istanza di Azure App Service, Azure Container Apps o Azure Virtual Machines.
È possibile abilitare un'identità gestita assegnata dal sistema per una risorsa Azure usando il portale di Azure o l'Azure CLI.
Nel portale di Azure passare alla risorsa che ospita il codice dell'applicazione, ad esempio un'istanza di Azure App Service o Azure Container Apps.
Nella Pagina Panoramica della risorsa, espandere Impostazioni e selezionare Identità nel menu di navigazione.
Nella pagina Identity, impostare il cursore Stato su Attivato.
Seleziona Salva per applicare le modifiche.
Assegnare ruoli all'identità gestita
Successivamente, determinare i ruoli necessari per l'app e assegnare tali ruoli all'identità gestita. È possibile assegnare ruoli a un'identità gestita negli ambiti seguenti:
- risorsa: i ruoli assegnati si applicano solo a tale risorsa specifica.
- gruppo di risorse: i ruoli assegnati si applicano a tutte le risorse contenute nel gruppo di risorse.
- Sottoscrizione: I ruoli assegnati si applicano a tutte le risorse contenute nella sottoscrizione.
L'esempio seguente illustra come assegnare ruoli nell'ambito del gruppo di risorse, poiché molte app gestiscono tutte le risorse Azure correlate usando un singolo gruppo di risorse.
Passare alla pagina panoramica del gruppo di risorse che contiene l'app con l'identità gestita assegnata dal sistema.
Selezionare Controllo di accesso (IAM) nella navigazione a sinistra.
Nella pagina Controllo di accesso (IAM), seleziona + Aggiungi nel menu in alto e quindi scegli Aggiungi assegnazione di ruolo per passare alla pagina Aggiungi assegnazione di ruolo.
La pagina Aggiungi assegnazione di ruolo presenta un flusso di lavoro a schede suddiviso in più passaggi per assegnare ruoli alle identità. Nella scheda iniziale Ruolo, usare la casella di ricerca in alto per individuare il ruolo da assegnare all'identità.
Selezionare il ruolo nei risultati e quindi scegliere Avanti per passare alla scheda Membri.
Per l'opzione Assegna accesso a, selezionare identità gestita.
Per l'opzione Membri, scegliere + Seleziona membri per aprire il pannello Seleziona identità gestite.
Nel pannello Seleziona identità gestite, utilizza i menu a tendina Sottoscrizione e Identità gestita per filtrare i risultati della ricerca delle tue identità. Usare la casella di ricerca Select per individuare l'identità di sistema abilitata per la risorsa Azure che ospita l'app.
Selezionare l'identità e scegliere Selezionare nella parte inferiore del pannello per continuare.
Selezionare Rivedi e assegna nella parte inferiore della pagina.
Nella scheda finale Rivedi e assegna, selezionare Rivedi e assegna per completare il flusso di lavoro.
Autenticarsi ai servizi di Azure dalla tua app
La libreria di identità Azure offre varie credentials, implementazioni di TokenCredential adattate al supporto di diversi scenari e flussi di autenticazione Microsoft Entra. Poiché l'identità gestita non è disponibile durante l'esecuzione in locale, i passaggi successivi illustrano quali credenziali usare in quale scenario:
-
ambiente di sviluppo locale: durante lo sviluppo locale solo, usare una classe denominata DefaultAzureCredential per una catena di credenziali preconfigurata e opinata.
DefaultAzureCredentialindividua le credenziali utente dall'IDE o dagli strumenti locali, ad esempio il Azure CLI o l'Visual Studio Code. Offre inoltre flessibilità e praticità per i tentativi, i tempi di attesa per le risposte e il supporto per più opzioni di autenticazione. Per ulteriori informazioni, visitare l'articolo Autenticazione ai servizi Azure nello sviluppo locale. - Azure-hosted apps: quando l'app è in esecuzione in Azure, usare ManagedIdentityCredential per individuare in modo sicuro l'identità gestita configurata per l'app. La specifica di questo tipo esatto di credenziali impedisce che altre credenziali disponibili vengano prelevate in modo imprevisto.
Implementare il codice
Aggiungere il pacchetto azure-identity all'applicazione passando alla directory del progetto dell'applicazione ed eseguendo il comando seguente:
pip install azure-identity
Azure servizi sono accessibili usando classi client specializzate dalle varie librerie client Azure SDK. Nell'esempio di codice seguente viene illustrato come creare un'istanza di credenziali e usarla con un client del servizio Azure SDK. Nel codice dell'applicazione completare la procedura seguente per eseguire l'autenticazione usando un'identità gestita:
- Importare la
ManagedIdentityCredentialclasse dalazure.identitymodulo. - Creare un oggetto
ManagedIdentityCredential. - Passare l'oggetto
ManagedIdentityCredentialal costruttore client Azure SDK.
L'esempio seguente illustra come autenticare un'identità gestita assegnata dal sistema utilizzando BlobServiceClient.
from azure.identity import ManagedIdentityCredential
from azure.storage.blob import BlobServiceClient
# Authenticate using system-assigned managed identity
credential = ManagedIdentityCredential()
blob_service_client = BlobServiceClient(
account_url="https://<account-name>.blob.core.windows.net",
credential=credential
)
Quando si sviluppa in locale, è possibile usare DefaultAzureCredential per individuare le credenziali dagli strumenti di sviluppo locali. Quando viene distribuito in Azure, passare a ManagedIdentityCredential per gli scenari di produzione:
import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.storage.blob import BlobServiceClient
# Use ManagedIdentityCredential in Azure, DefaultAzureCredential locally
if os.getenv("WEBSITE_HOSTNAME"):
credential = ManagedIdentityCredential()
else:
credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
account_url="https://<account-name>.blob.core.windows.net",
credential=credential
)