Condividi tramite


Autenticazione di app ospitate in Azure in risorse di Azure con Azure SDK per JavaScript

Quando un'app è ospitata in Azure (usando un servizio come servizio app Azure, Azure Macchine virtuali o Istanze di Azure Container), l'approccio consigliato per autenticare un'app per le risorse di Azure consiste nell'usare un'identità gestita.

Un'identità gestita fornisce un'identità per l'app in modo che l'app si connetta ad altre risorse di Azure senza la necessità di usare un segreto , ad esempio un stringa di connessione di chiave. Internamente, Azure conosce l'identità dell'app e le risorse a cui è consentito connettersi. Azure usa queste informazioni per ottenere automaticamente i token di Microsoft Entra per consentire all'app di connettersi ad altre risorse di Azure, senza dover gestire (creare o ruotare) i segreti di autenticazione.

Tipi di identità gestita

Sono disponibili due tipi di identità gestite:

  • Identità gestite assegnate dal sistema - singola risorsa di Azure
  • Identità gestite assegnate dall'utente - più risorse di Azure

Questo articolo illustra i passaggi per abilitare e usare un'identità gestita assegnata dal sistema per un'app. Se è necessario usare un'identità gestita assegnata dall'utente, vedere l'articolo Gestire le identità gestite assegnate dall'utente per informazioni su come creare un'identità gestita assegnata dall'utente.

Identità gestite assegnate dal sistema per una singola risorsa

Le identità gestite assegnate dal sistema vengono fornite e collegate direttamente a una risorsa di Azure. Quando si abilita l'identità gestita in una risorsa di Azure, si ottiene un'identità gestita assegnata dal sistema per tale risorsa. È associato al ciclo di vita della risorsa di Azure. Quando la risorsa viene eliminata, Azure elimina automaticamente anche l'identità. Poiché è sufficiente abilitare l'identità gestita per la risorsa di Azure che ospita il codice, questo è il tipo di identità gestita più semplice da usare.

Identità gestite assegnate dall'utente per più risorse

Concettualmente questa identità è una risorsa di Azure autonoma. Questo approccio viene usato più frequentemente quando la soluzione ha più carichi di lavoro eseguiti in più risorse di Azure che devono tutti condividere la stessa identità e le stesse autorizzazioni. Ad esempio, se la soluzione include componenti eseguiti su più istanze di macchine virtuali e servizio app e tutti gli utenti hanno bisogno dell'accesso allo stesso set di risorse di Azure, la creazione e l'uso di un'identità gestita assegnata dall'utente in tali risorse avrebbe senso.

1 - Assegnato dal sistema: Abilitare l'app ospitata

Il primo passaggio consiste nell'abilitare l'identità gestita nella risorsa di Azure che ospita l'app. Ad esempio, se si ospita un'applicazione Django usando app Azure Servizio, è necessario abilitare l'identità gestita per tale app Web servizio app. Se si usa una macchina virtuale per ospitare l'app, è necessario abilitare la macchina virtuale all'uso dell'identità gestita.

È possibile abilitare l'uso dell'identità gestita per una risorsa di Azure usando il portale di Azure o l'interfaccia della riga di comando di Azure.

Istruzioni Schermata
Passare alla risorsa che ospita il codice dell'applicazione nel portale di Azure.

Ad esempio, è possibile digitare il nome della risorsa nella casella di ricerca nella parte superiore della pagina e accedervi selezionandola nella finestra di dialogo.
Screenshot che mostra come usare la barra di ricerca superiore nella portale di Azure per individuare e passare a una risorsa in Azure.
Nella pagina della risorsa selezionare la voce di menu Identità nel menu a sinistra.

Tutte le risorse di Azure in grado di supportare l'identità gestita avranno una voce di menu Identità anche se il layout del menu può variare leggermente.
Screenshot che mostra la posizione della voce di menu Identità nel menu a sinistra per una risorsa di Azure.
Nella pagina Identità:
  1. Modificare il dispositivo di scorrimento Stato impostandolo su ON.
  2. Seleziona Salva.
Una finestra di dialogo di conferma verifica che si vuole abilitare l'identità gestita per il servizio. Rispondere per abilitare l'identità gestita per la risorsa di Azure.
Screenshot che mostra come abilitare l'identità gestita per una risorsa di Azure nella pagina Identità della risorsa.

2 - Assegnare ruoli all'identità gestita

Come passaggio successivo occorre determinare i ruoli (autorizzazioni) necessari per l'app e assegnare l'identità gestita a tali ruoli in Azure. A un'identità gestita è possibile assegnare ruoli a livello di risorsa, gruppo di risorse o sottoscrizione. Questo esempio illustra come assegnare ruoli nell'ambito del gruppo di risorse perché la maggior parte delle applicazioni raggruppa tutte le risorse di Azure in un singolo gruppo di risorse.

Istruzioni Schermata
Individuare il gruppo di risorse per l'applicazione cercando il nome del gruppo di risorse usando la casella di ricerca nella parte superiore del portale di Azure.

Passare al gruppo di risorse selezionando il nome del gruppo di risorse nell'intestazione Gruppi di risorse della finestra di dialogo.
Screenshot che mostra come usare la barra di ricerca superiore nel portale di Azure per individuare e passare a un gruppo di risorse in Azure.
Nella pagina del gruppo di risorse selezionare Controllo di accesso (IAM) nel menu a sinistra. Screenshot che mostra la posizione della voce di menu Controllo di accesso (I A M) nel menu a sinistra di un gruppo di risorse di Azure.
Nella pagina Controllo di accesso (IAM):
  1. Selezionare la scheda Assegnazioni di ruolo.
  2. Selezionare + Aggiungi nel menu in alto e quindi Aggiungi assegnazione di ruolo nel menu a discesa risultante.
Screenshot che mostra come passare alla scheda Assegnazioni di ruolo e alla posizione del pulsante usato per aggiungere assegnazioni di ruolo a un gruppo di risorse.
Nella pagina Aggiungi assegnazione di ruolo sono elencati tutti i ruoli che è possibile assegnare per il gruppo di risorse.
  1. Usare la casella di ricerca per filtrare l'elenco in modo da renderlo più gestibile. Questo esempio illustra come filtrare i ruoli di BLOB del servizio di archiviazione.
  2. Selezionare il ruolo che si vuole assegnare.
    Selezionare Avanti per passare alla schermata successiva.
Screenshot che mostra come filtrare e selezionare le assegnazioni di ruolo da aggiungere al gruppo di risorse.
La pagina Aggiungi assegnazione di ruolo successiva consente di specificare a quale utente assegnare il ruolo.
  1. Selezionare Identità gestita in Assegnare l'accesso a.
  2. Selezionare + Selezionare membri in Membri.
Viene aperta una finestra di dialogo sul lato destro del portale di Azure.
Screenshot che mostra come selezionare l'identità gestita come tipo di utente a cui si assegnare il ruolo (autorizzazione) nella pagina Aggiungi assegnazioni di ruolo.
Nella finestra di dialogo Selezionare le identità gestite:
  1. È possibile usare l'elenco a discesa Identità gestita e la casella di testo Selezionare per filtrare l'elenco delle identità gestite nella sottoscrizione. In questo esempio selezionando Servizio app vengono visualizzate solo le identità gestite associate a un Servizio app.
  2. Selezionare l'identità gestita per la risorsa di Azure che ospita l'applicazione.
Scegliere Seleziona nella parte inferiore della finestra di dialogo per continuare.
Screenshot che mostra come usare la finestra di dialogo di selezione delle identità gestite per filtrare e selezionare l'identità gestita a cui assegnare il ruolo.
L'identità gestita viene visualizzata come selezionata nella schermata Aggiungi assegnazione di ruolo.

Selezionare Rivedi e assegna per passare alla pagina finale e quindi Rivedi e assegna di nuovo per completare il processo.
Screenshot della schermata finale di Aggiungi assegnazioni di ruolo in cui un utente deve selezionare il pulsante Rivedi e assegna per finalizzare l'assegnazione di ruolo.

3 - Implementare DefaultAzureCredential nell'applicazione

La DefaultAzureCredential classe rileverà automaticamente che viene usata un'identità gestita e userà l'identità gestita per l'autenticazione ad altre risorse di Azure. Come descritto nell'articolo Panoramica dell'autenticazione di Azure SDK per JavaScript, DefaultAzureCredential supporta più metodi di autenticazione e determina il metodo di autenticazione usato in fase di esecuzione. In questo modo, l'app può usare metodi di autenticazione diversi in ambienti diversi senza implementare codice specifico dell'ambiente.

Aggiungere prima di tutto il pacchetto di @azure/identità all'applicazione.

npm install @azure/identity

Successivamente, per qualsiasi codice JavaScript che crea un oggetto client azure SDK nell'app, si vuole:

  1. Importare la DefaultAzureCredential classe dal @azure/identity modulo.
  2. Creare un oggetto DefaultAzureCredential.
  3. Passare l'oggetto al costruttore dell'oggetto DefaultAzureCredential client di Azure SDK.

Un esempio è illustrato nel segmento di codice seguente.

// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);

Quando il codice precedente viene eseguito nella workstation locale durante lo sviluppo locale, il metodo SDK, DefaultAzureCredential(), cercare le variabili di ambiente per un'entità servizio dell'applicazione o in VS Code, l'interfaccia della riga di comando di Azure o Azure PowerShell per un set di credenziali per sviluppatori, che possono essere usate per autenticare l'app nelle risorse di Azure durante lo sviluppo locale. In questo modo, questo stesso codice può essere usato per autenticare l'app nelle risorse di Azure durante lo sviluppo locale e quando viene distribuito in Azure.