Come funzionano le identità gestite per le risorse di Azure con le macchine virtuali di Azure

Le identità gestite per le risorse di Azure offrono ai servizi di Azure un'identità gestita automaticamente in Microsoft Entra ID. È possibile usare questa identità per l'autenticazione in qualsiasi servizio che supporta l'autenticazione di Microsoft Entra senza dover immettere le credenziali nel codice.

Questo articolo illustra come funzionano le identità gestite con le macchine virtuali di Azure.

Funzionamento

Internamente, le identità gestite sono entità servizio di un tipo speciale, che possono essere usate solo con le risorse di Azure. Quando l'identità gestita viene eliminata, l'entità servizio corrispondente viene rimossa automaticamente. Inoltre, quando viene creata un'identità assegnata dall'utente o dal sistema, il provider di risorse di Identità gestita emette un certificato internamente per tale identità.

Il codice può usare un'identità gestita per richiedere i token di accesso per i servizi che supportano l'autenticazione di Microsoft Entra. Azure si occupa della distribuzione delle credenziali usate dall'istanza del servizio.

Il diagramma seguente illustra il funzionamento delle identità del servizio gestite con macchine virtuali di Azure:

Diagramma che mostra come le identità del servizio gestito sono associate alle macchine virtuali di Azure, ottengono un token di accesso e richiamano una risorsa Microsoft Entra protetta.

La tabella seguente illustra le differenze tra le identità gestite assegnate dal sistema e assegnate dall'utente:

Proprietà Identità gestita assegnata dal sistema Identità gestita assegnata dall'utente
Creazione Creata come parte di una risorsa di Azure (ad esempio, una macchina virtuale di Azure o Servizio app di Azure). Creata come risorsa di Azure autonoma.
Ciclo di vita Ciclo di vita condiviso con la risorsa di Azure con cui viene creata l'identità gestita.
Quando viene eliminata la risorsa padre, viene eliminata anche l'identità gestita.
Ciclo di vita indipendente.
Deve essere eliminata in modo esplicito.
Condivisione tra risorse di Azure Non si può condividere.
Può essere associata solo a una singola risorsa di Azure.
Può essere condivisa.
La stessa identità gestita assegnata dall'utente può essere associata a più risorse di Azure.
Casi d'uso comuni Carichi di lavoro che sono contenuti all'interno di una singola risorsa di Azure.
Carichi di lavoro per cui sono necessarie identità indipendenti.
Ad esempio, un'applicazione che viene eseguita in una singola macchina virtuale
Carichi di lavoro che vengono eseguiti in più risorse e che possono condividere una singola identità.
Carichi di lavoro che richiedono l'autorizzazione preliminare per una risorsa protetta come parte di un flusso di provisioning.
Carichi di lavoro in cui le risorse vengono riciclate frequentemente, ma le autorizzazioni devono rimanere coerenti.
Ad esempio, un carico di lavoro in cui più macchine virtuali devono accedere alla stessa risorsa

Identità gestita assegnata dal sistema

  1. Azure Resource Manager riceve una richiesta per abilitare l'identità gestita assegnata dal sistema in una macchina virtuale.

  2. Azure Resource Manager crea un'entità servizio in Microsoft Entra ID per l'identità della VM (macchina virtuale). L'entità servizio viene creata nel tenant di Microsoft Entra considerato attendibile dalla sottoscrizione.

  3. Azure Resource Manager aggiorna l'identità della macchina virtuale usando l'endpoint dell'identità del servizio metadati dell'istanza di Azure (per Windows e Linux), fornendo l'endpoint con l'ID client e il certificato dell'entità servizio.

  4. Dopo l'assegnazione di un'identità alla macchina virtuale, usare le informazioni sull'entità servizio per concedere alla macchina virtuale l'accesso alle risorse di Azure. Per chiamare Azure Resource Manager, usare Il controllo degli accessi in base al ruolo (RBAC) di Azure per assegnare il ruolo appropriato all'entità servizio della macchina virtuale. Per chiamare Key Vault, concedere al codice l'accesso al segreto o alla chiave specifica in Key Vault.

  5. Il codice in esecuzione nella macchina virtuale può richiedere un token all'endpoint servizio metadati dell'istanza di Azure, accessibile solo dall'interno della macchina virtuale: http://169.254.169.254/metadata/identity/oauth2/token

    • Il parametro resource specifica il servizio a cui viene inviato il token. Per l'autenticazione in Azure Resource Manager, usare resource=https://management.azure.com/.
    • Il parametro della versione API specifica la versione del servizio metadati dell'istanza. Usare api-version=2018-02-01 o una versione successiva.

    L'esempio seguente illustra come usare CURL per effettuare una richiesta all'endpoint dell'Identità gestita locale per ottenere un token di accesso per il servizio metadati dell'istanza di Azure.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true
    
  6. Viene effettuata una chiamata a Microsoft Entra ID per richiedere un token di accesso come specificato nel Passaggio 5, usando l'ID client e il certificato di cui è stata eseguita la configurazione nel Passaggio 3. Microsoft Entra ID restituisce un token di accesso JSON Web Token (JWT).

  7. Il codice invia il token di accesso in una chiamata a un servizio che supporta l'autenticazione di Microsoft Entra.

Identità gestita assegnata dall'utente

  1. Azure Resource Manager riceve una richiesta per creare un'identità gestita assegnata dall'utente.

  2. Azure Resource Manager crea un'entità servizio in Microsoft Entra ID per l'identità gestita assegnata dall'utente. L'entità servizio viene creata nel tenant di Microsoft Entra considerato attendibile dalla sottoscrizione.

  3. Azure Resource Manager riceve una richiesta di configurazione dell'identità gestita assegnata dall'utente in una macchina virtuale e aggiorna l'endpoint dell'identità del servizio metadati dell'istanza di Azure con l'ID client e il certificato dell'entità servizio dell'identità gestita assegnata dall'utente.

  4. Dopo la creazione dell'identità gestita assegnata dall'utente, usare le informazioni dell'entità servizio per concedere all'identità l'accesso alle risorse di Azure. Per chiamare Azure Resource Manager, usare il controllo degli accessi in base al ruolo di Azure per assegnare il ruolo appropriato all'entità servizio dell'identità assegnata dall'utente. Per chiamare Key Vault, concedere al codice l'accesso al segreto o alla chiave specifica in Key Vault.

    Nota

    È possibile eseguire questo passaggio anche prima del Passaggio 3.

  5. Il codice in esecuzione nella macchina virtuale può richiedere un token all'endpoint dell'identità del servizio metadati dell'istanza di Azure, accessibile solo dall'interno della macchina virtuale: http://169.254.169.254/metadata/identity/oauth2/token

    • Il parametro resource specifica il servizio a cui viene inviato il token. Per l'autenticazione in Azure Resource Manager, usare resource=https://management.azure.com/.

    • Il parametro client_id specifica l'identità per cui viene richiesto il token. Questo valore è necessario per evitare ambiguità quando in una singola macchina virtuale sono presenti più identità assegnate dall'utente. È possibile trovare il ID client in Panoramica identità gestita:

      Screenshot che mostra come copiare l'ID client dell'identità gestita.

    • Il parametro relativo alla versione dell'API specifica la versione del servizio metadati dell'istanza di Azure. Usare api-version=2018-02-01 o versione successiva.

      L'esempio seguente illustra come usare CURL per effettuare una richiesta all'endpoint dell'Identità gestita locale per ottenere un token di accesso per il servizio metadati dell'istanza di Azure.

      curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F&client_id=00001111-aaaa-2222-bbbb-3333cccc4444' -H Metadata:true
      
  6. Viene effettuata una chiamata a Microsoft Entra ID per richiedere un token di accesso come specificato nel Passaggio 5, usando l'ID client e il certificato di cui è stata eseguita la configurazione nel Passaggio 3. Microsoft Entra ID restituisce un token di accesso JSON Web Token (JWT).

  7. Il codice invia il token di accesso in una chiamata a un servizio che supporta l'autenticazione di Microsoft Entra.

Passaggi successivi

È possibile iniziare a usare la funzionalità delle identità gestite per le risorse di Azure con le guide introduttive seguenti: