Autenticare un'identità gestita con Microsoft Entra ID per accedere alle risorse di Inoltro di Azure
Le identità gestite per le risorse di Azure offrono una funzionalità per l'intera piattaforma Azure che consente di creare un'identità sicura associata alla distribuzione in cui viene eseguito il codice dell'applicazione. È quindi possibile associare l'identità ai ruoli di controllo di accesso che concedono autorizzazioni personalizzate per l'accesso a risorse di Azure specifiche necessarie per l'applicazione.
Con le identità gestite, la piattaforma Azure gestisce questa identità di runtime. Non è necessario archiviare e proteggere le chiavi di accesso nel codice o nella configurazione dell'applicazione, né per l'identità stessa, né per le risorse a cui è necessario accedere. Un'app client di inoltro in esecuzione all'interno di un'applicazione del servizio app Azure o in una macchina virtuale con entità gestite abilitate per il supporto delle risorse di Azure non deve gestire regole e chiavi di firma di accesso condiviso o altri token di accesso. L'app client richiede solo l'indirizzo endpoint dello spazio dei nomi Di inoltro. Quando l'app si connette, Inoltro associa il contesto dell'entità gestita al client in un'operazione illustrata in un esempio più avanti in questo articolo. Una volta associata a un'identità gestita, il client di inoltro può eseguire tutte le operazioni autorizzate. L'autorizzazione viene concessa associando un'entità gestita ai ruoli di inoltro.
Nota
Questa funzionalità è disponibile a livello generale in tutte le aree, tra cui Microsoft Azure gestito da 21Vianet.
Panoramica
Quando un'entità di sicurezza (un utente, un gruppo, un'applicazione) tenta di accedere a un'entità di inoltro, la richiesta deve essere autorizzata. Con Microsoft Entra ID, l'accesso a una risorsa è un processo in due passaggi.
- In primo luogo, l'identità dell'entità di sicurezza viene autenticata e viene restituito un token OAuth 2.0. Il nome della risorsa per richiedere un token è
https://relay.azure.net
. Se un'applicazione viene eseguita all'interno di un'entità di Azure, ad esempio una macchina virtuale di Azure, un set di scalabilità di macchine virtuali o un'app di Funzioni di Azure, può usare un'identità gestita per accedere alle risorse. - Il token viene quindi passato come parte di una richiesta al servizio di inoltro per autorizzare l'accesso alla risorsa specificata (connessioni ibride, inoltro WCF). Microsoft Entra autorizza i diritti di accesso alle risorse protette tramite il controllo degli accessi in base al ruolo di Azure. Inoltro di Azure definisce un set di ruoli predefiniti di Azure che includono set comuni di autorizzazioni usate per accedere alle entità di inoltro. È anche possibile definire ruoli personalizzati per l'accesso ai dati. Per un elenco dei ruoli predefiniti supportati da Inoltro di Azure, vedere Ruoli predefiniti di Azure per Inoltro di Azure. Le applicazioni native e le applicazioni Web che effettuano richieste all'inoltro possono anche autorizzare con Microsoft Entra ID.
Ruoli predefiniti di Azure per Inoltro di Azure
Per Inoltro di Azure, la gestione degli spazi dei nomi e di tutte le risorse correlate tramite il portale di Azure e l'API di gestione delle risorse di Azure è già protetta usando il modello di controllo degli accessi in base al ruolo di Azure. Azure fornisce i ruoli predefiniti di Azure seguenti per autorizzare l'accesso a uno spazio dei nomi di inoltro:
Ruolo | Descrizione |
---|---|
Proprietario dell'inoltro di Azure | Usare questo ruolo per concedere l'accesso completo alle risorse di Inoltro di Azure. |
Listener di inoltro di Azure | Usare questo ruolo per concedere l'accesso in lettura in ascolto e entità alle risorse di Inoltro di Azure. |
Mittente dell'inoltro di Azure | Usare questo ruolo per concedere l'accesso in lettura di invio ed entità alle risorse di Inoltro di Azure. |
Ambito risorsa
Prima di assegnare un ruolo Controllo degli accessi in base al ruolo a un'entità di sicurezza, determinare l'ambito di accesso che dovrà avere. In base alle procedure consigliate, è sempre preferibile concedere solo l'ambito più restrittivo possibile.
L'elenco seguente descrive i livelli in cui è possibile definire l'ambito dell'accesso alle risorse di Inoltro di Azure, a partire dall'ambito più ristretto:
- Entità di inoltro: l'assegnazione di ruolo si applica a un'entità di inoltro specifica, ad esempio una connessione ibrida o un inoltro WCF.
- Spazio dei nomi di inoltro: l'assegnazione di ruolo si applica a tutte le entità di inoltro nello spazio dei nomi .
- Gruppo di risorse: l'assegnazione di ruolo si applica a tutte le risorse di inoltro nel gruppo di risorse.
- Sottoscrizione: l'assegnazione di ruolo si applica a tutte le risorse di inoltro in tutti i gruppi di risorse nella sottoscrizione.
Nota
Tenere presente che la propagazione delle assegnazioni di ruolo di Azure può richiedere fino a cinque minuti. Per altre informazioni sul modo in cui vengono definiti i ruoli predefiniti, vedere Informazioni sulle definizioni di ruolo. Per informazioni sulla creazione di ruoli personalizzati di Azure, consultare Ruoli personalizzati di Azure.
Abilitare l'identità gestita
Abilitare prima di tutto l'identità gestita per la risorsa di Azure che deve accedere alle entità di inoltro di Azure (connessioni ibride o inoltro WCF). Ad esempio, se l'applicazione client di inoltro è in esecuzione in una macchina virtuale di Azure, abilitare l'identità gestita per la macchina virtuale seguendo le istruzioni riportate nell'articolo Configurare l'identità gestita per una macchina virtuale di Azure. Dopo aver abilitato questa impostazione, viene creata una nuova identità del servizio gestito nell'ID Microsoft Entra.
Per un elenco dei servizi che supportano le identità gestite, vedere Servizi che supportano le identità gestite per le risorse di Azure.
Assegnare un ruolo di inoltro di Azure all'identità gestita
Dopo aver abilitato l'identità gestita, assegnare uno dei ruoli di inoltro di Azure (proprietario dell'inoltro di Azure, listener di inoltro di Azure o mittente dell'inoltro di Azure) all'identità nell'ambito appropriato. Quando il ruolo di Azure viene assegnato a un'identità gestita, all'identità gestita viene concesso l'accesso alle entità di inoltro nell'ambito appropriato.
La sezione seguente usa una semplice applicazione eseguita con un'identità gestita in un'istanza di macchina virtuale di Azure e accede alle risorse di inoltro.
App di esempio nella macchina virtuale che accede alle entità di inoltro
Scaricare l'applicazione console di esempio Connessioni ibride nel computer da GitHub.
Creare una macchina virtuale di Azure. Per questo esempio, usa un'immagine di Windows 10.
Abilitare l'identità assegnata dal sistema o un'identità assegnata dall'utente per la macchina virtuale di Azure. Per istruzioni, vedere Abilitare l'identità per una macchina virtuale.
Assegnare uno dei ruoli di inoltro all'identità del servizio gestito nell'ambito desiderato (entità di inoltro, spazio dei nomi di inoltro, gruppo di risorse, sottoscrizione). Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.
Compilare l'app console in locale nel computer locale in base alle istruzioni del documento README.
Copiare il file eseguibile nella <cartella local path>\RoleBasedAccessControl\bin\Debug nella macchina virtuale. È possibile usare RDP per connettersi alla macchina virtuale di Azure. Per altre informazioni, vedere Come connettersi e accedere a una macchina virtuale di Azure che esegue Windows.
Eseguire RoleBasedAccessControl.exe nella macchina virtuale di Azure in base alle istruzioni del documento README.
Nota
Seguire la stessa procedura per eseguire l'applicazione console per gli inoltri WCF.
Codice evidenziato dall'esempio
Ecco il codice dell'esempio che illustra come usare l'autenticazione di Microsoft Entra per connettersi al servizio inoltro di Azure.
Creare un oggetto TokenProvider usando il
TokenProvider.CreateManagedIdentityTokenProvider
metodo .- Se si usa un'identità gestita assegnata dal sistema:
TokenProvider.CreateManagedIdentityTokenProvider();
- Se si usa un'identità gestita assegnata dall'utente, ottenere l'ID client per l'identità assegnata dall'utente dalla pagina Identità gestita nel portale di Azure. Per istruzioni, vedere Elencare le identità gestite assegnate dall'utente.
var managedCredential = new ManagedIdentityCredential(clientId); tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);
- Se si usa un'identità gestita assegnata dal sistema:
Creare un oggetto HybridConnectionListener o HybridConnectionClient passando l'URI della connessione ibrida e il provider di token creato nel passaggio precedente.
Listener:
var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);
Mittente:
var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);
Esempi
- Connessioni ibride: .NET, Java, JavaScript
- Inoltro WCF: .NET
Passaggi successivi
Per altre informazioni sull'inoltro di Azure, vedere gli articoli seguenti.