Condividi tramite


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 principali di servizio di un tipo speciale, che possono essere utilizzate 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 principale, 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à principale del servizio viene creata nel tenant attendibile di Microsoft Entra della 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 all'endpoint 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 (Azure RBAC) per assegnare il ruolo appropriato al principal del 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 dell'API specifica la versione IMDS. 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' -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 attendibile Microsoft Entra della sottoscrizione.

  3. Azure Resource Manager riceve una richiesta per configurare l'identità gestita assegnata dall'utente su una macchina virtuale e aggiorna l'endpoint dell'identità del Servizio Metadati dell'Istanza di Azure con l'ID client e il certificato del principal del servizio dell'identità gestita assegnata dall'utente.

  4. Dopo la creazione dell'identità gestita assegnata dall'utente, utilizzare le informazioni del principale del servizio per concedere all'identità l'accesso alle risorse di Azure. Per chiamare Azure Resource Manager, utilizzare Azure RBAC per assegnare il ruolo appropriato al principale del servizio dell'identità assegnata dall'utente. Per accedere a Key Vault, concedi al tuo codice l'accesso al segreto o alla chiave specifica all'interno di Key Vault.

    Nota

    È possibile eseguire questo passaggio anche prima del Passaggio 3.

  5. Il tuo codice in esecuzione sulla macchina virtuale può richiedere un token dall'endpoint dell'identità del servizio metadati dell'istanza di Azure, accessibile solo dall'interno della VM: 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 nella sezione Panoramica dell'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. Usa api-version=2018-02-01 o superiore.

      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: