Condividi tramite


Autenticare le app Java ospitate in Azure alle risorse di Azure utilizzando un'identità gestita assegnata dal sistema

L'approccio consigliato per autenticare un'app ospitata Azure in altre risorse di Azure consiste nell'usare un'identità managed identity. La maggior parte dei servizi Azure supporta questo approccio, incluse le app ospitate in Servizio app di Azure, App contenitore di Azure e Macchine virtuali di Azure. Per altre informazioni, vedere Azure servizi e tipi di risorse che supportano le identità gestite. Per altre informazioni sulle diverse tecniche e approcci di autenticazione, vedere Authenticate Java apps to Azure services using the Azure Identity library.

Nelle sezioni seguenti viene illustrato quanto segue:

  • 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:

  • Assegnate dal sistema, le identità gestite vengono abilitate direttamente su una risorsa 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.
  • Identità gestita assegnata dall'utente vengono create come risorse Azure autonome 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 seguenti 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 Autenticare le app Java ospitate su Azure alle risorse Azure utilizzando un'identità gestita assegnata dall'utente.

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 Servizio app di Azure, App contenitore di Azure o Macchine virtuali di Azure.

È possibile abilitare un'identità gestita assegnata dal sistema per una risorsa Azure usando il portale di Azure o l'interfaccia della riga di comando di Azure.

  1. Nel portale di Azure passare alla risorsa che ospita il codice dell'applicazione, ad esempio un'istanza di Servizio app di Azure o App contenitore di Azure.

  2. Nella Pagina Panoramica della risorsa, espandere Impostazioni e selezionare Identità nel menu di navigazione.

  3. Nella pagina Identity, impostare il cursore Stato su Attivato.

  4. Seleziona Salva per applicare le modifiche.

    Screenshot che mostra come abilitare un'identità gestita assegnata dal sistema in un'app contenitore.

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.

  1. Passare alla pagina panoramica del gruppo di risorse che contiene l'app con l'identità gestita assegnata dal sistema.

  2. Selezionare Controllo di accesso (IAM) nella navigazione a sinistra.

  3. 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.

    Screenshot che mostra come accedere alla pagina di assegnazione dei ruoli di identità.

  4. 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à.

  5. Selezionare il ruolo nei risultati e quindi scegliere Avanti per passare alla scheda Membri.

  6. Per l'opzione Assegna accesso a, selezionare identità gestita.

  7. Per l'opzione Membri, scegliere + Seleziona membri per aprire il pannello Seleziona identità gestite.

  8. 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.

    Screenshot che mostra il processo di assegnazione dell'identità gestita.

  9. Selezionare l'identità e scegliere Selezionare nella parte inferiore del pannello per continuare.

  10. Selezionare Rivedi e assegna nella parte inferiore della pagina.

  11. 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 Azure Identity fornisce varie credenziali come implementazioni di TokenCredential. Ogni implementazione supporta diversi scenari e flussi di autenticazione Microsoft Entra. Per le app ospitate Azure, usare DefaultAzureCredential, che individua automaticamente le credenziali di identità gestite durante l'esecuzione in Azure.

Implementare il codice

Aggiungere la dipendenza al file:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
</dependency>

È possibile accedere ai servizi Azure usando classi client specializzate dalle librerie client Azure SDK. Gli esempi di codice seguenti illustrano come configurare le credenziali per l'autenticazione dell'identità gestita assegnata dal sistema.

Usare DefaultAzureCredential

Usare DefaultAzureCredential per le app ospitate Azure perché individua automaticamente le credenziali di identità gestite durante l'esecuzione in Azure. Per le identità gestite assegnate dal sistema, non è necessaria alcuna configurazione aggiuntiva.

import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;

// DefaultAzureCredential automatically discovers managed identity when running in Azure
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://<your-key-vault-name>.vault.azure.net")
    .credential(credential)
    .buildClient();

Usare ManagedIdentityCredential

Se si vuole usare in modo esplicito le credenziali dell'identità gestita ed evitare la ricerca della catena di credenziali in , usare direttamente . Per le identità gestite assegnate dal sistema, non specificare un ID client:

import com.azure.identity.ManagedIdentityCredential;
import com.azure.identity.ManagedIdentityCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;

// For system-assigned managed identity, don't specify a client ID
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://<your-key-vault-name>.vault.azure.net")
    .credential(credential)
    .buildClient();

Passaggi successivi

Questo articolo ha illustrato l'autenticazione usando un'identità gestita assegnata dal sistema. Questa forma di autenticazione è uno dei diversi modi in cui è possibile eseguire l'autenticazione nel Azure SDK per Java. Gli articoli seguenti descrivono altri modi:

Se si verificano problemi relativi all'autenticazione dell'applicazione ospitata Azure, vedere Troubleshoot Azure-hosted application authentication.

Dopo l'autenticazione master, vedere Configurare la registrazione nella Azure SDK per Java per informazioni sulle funzionalità di registrazione fornite dall'SDK.