Autenticare e autorizzare un'applicazione con Microsoft Entra ID per accedere alle entità del bus di servizio di Azure
Il bus di servizio di Azure supporta l'uso di Microsoft Entra ID per autorizzare le richieste alle entità del bus di servizio (code, argomenti, sottoscrizioni o filtri). Con Microsoft Entra ID è possibile usare il Controllo degli accessi in base al ruolo di Azure per concedere le autorizzazioni a un'entità di sicurezza, che può essere un utente, un gruppo, un'entità servizio dell'applicazione o un'identità gestita per le risorse di Azure. Un vantaggio fondamentale dell'uso di Microsoft Entra ID con il bus di servizio di Azure è che non è più necessario archiviare le credenziali nel codice. È invece possibile richiedere un token di accesso OAuth 2.0 da Microsoft Identity Platform. Se l'autenticazione riesce, Microsoft Entra ID restituisce un token di accesso all'applicazione e questa può quindi usare il token di accesso per autorizzare le richieste al bus di servizio di Azure.
Importante
È possibile disabilitare l'autenticazione della chiave SAS o locale per uno spazio dei nomi del Bus di servizio e consentire solo l'autenticazione di Microsoft Entra. Per istruzioni dettagliate, vedere Disabilitare l'autenticazione locale.
Panoramica
Quando un'entità di sicurezza (un utente, un gruppo o un'applicazione) prova ad accedere a un'entità del bus di servizio, 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://servicebus.azure.net
. - Il token viene quindi passato come parte di una richiesta al servizio Bus di servizio per autorizzare l'accesso alla risorsa specificata.
Il passaggio di autenticazione richiede che una richiesta dell'applicazione contenga un token di accesso OAuth 2.0 in fase di esecuzione. 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. Per informazioni su come autenticare le richieste effettuate da un'identità gestita al servizio Bus di servizio, vedere Autenticare l'accesso alle risorse del bus di servizio di Azure con Microsoft Entra ID e le identità gestite per le risorse di Azure.
Il passaggio di autorizzazione richiede l'assegnazione di uno o più ruoli di Azure all'entità di sicurezza. Il bus di servizio di Azure fornisce ruoli di Azure che includono set di autorizzazioni per le risorse del bus di servizio. I ruoli assegnati a un'entità di sicurezza determinano le autorizzazioni che l'entità avrà per le risorse del bus di servizio. Per altre informazioni sull'assegnazione dei ruoli di Azure al bus di servizio di Azure, vedere Ruoli predefiniti di Azure per il bus di servizio di Azure.
Le applicazioni native e le applicazioni Web che effettuano richieste al bus di servizio possono anche eseguire l'autorizzazione con Microsoft Entra ID. Questo articolo illustra come richiedere un token di accesso e usarlo per autorizzare le richieste per le risorse del bus di servizio.
Ruoli predefiniti di Azure per il Bus di servizio di Azure
Microsoft Entra autorizza i diritti di accesso alle risorse protette tramite il Controllo degli accessi in base al ruolo di Azure. Il bus di servizio di Azure definisce un set di ruoli predefiniti di Azure che includono set comuni di autorizzazioni usate per accedere alle entità del bus di servizio ed è anche possibile definire ruoli personalizzati per l'accesso ai dati.
Quando un ruolo di Azure viene assegnato a un'entità di sicurezza Microsoft Entra, Azure concede l'accesso a tali risorse per tale entità di sicurezza. L'ambito dell'accesso può essere limitato al livello di sottoscrizione, al gruppo di risorse, allo spazio dei nomi o all'entità del bus di servizio (coda, argomento o sottoscrizione). Un'entità di sicurezza di Microsoft Entra può essere un utente, un gruppo, un'entità servizio dell'applicazione o un'identità gestita per le risorse di Azure.
Per il Bus di servizio di Azure, la gestione degli spazi dei nomi e di tutte le risorse correlate tramite il portale di Azure e l'API Gestione risorse di Azure è già protetto mediante il modello RBAC di Azure. Azure fornisce i ruoli predefiniti seguenti per autorizzare l'accesso a uno spazio dei nomi del bus di servizio:
- Proprietario dati del bus di servizio di Azure: usare questo ruolo per concedere l'accesso completo alle risorse del bus di servizio.
- Mittente dati del bus di servizio di Azure: usare questo ruolo per concedere all'invio l'accesso allo spazio dei nomi del bus di servizio e alle relative entità.
- Destinatario dei dati del bus di servizio di Azure: usare questo ruolo per concedere al destinatario l'accesso allo spazio dei nomi del bus di servizio e alle relative entità.
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 del bus di servizio, a partire dall'ambito più restrittivo:
Coda, argomento o sottoscrizione: l'assegnazione di ruolo si applica all'entità del bus di servizio specifica. Attualmente il portale di Azure non supporta l'assegnazione di utenti/gruppi/identità gestite ai ruoli del bus di servizio di Azure a livello di sottoscrizione dell'argomento.
Spazio dei nomi del bus di servizio: l'assegnazione di ruolo si estende all'intera topologia del bus di servizio nello spazio dei nomi e alla sottoscrizione della coda o dell'argomento associata.
Gruppo di risorse: l'assegnazione di ruolo si applica a tutte le risorse del bus di servizio nel gruppo di risorse.
Sottoscrizione di Azure: l'assegnazione di ruolo si applica a tutte le risorse del bus di servizio 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.
Eseguire l'autenticazione da un'applicazione
Un vantaggio fondamentale dell'uso di Microsoft Entra ID con il bus di servizio è che le credenziali non devono più essere archiviate nel codice. È invece possibile richiedere un token di accesso OAuth 2.0 da Microsoft Identity Platform. Microsoft Entra autentica l'entità di sicurezza (un utente, un gruppo, un'entità servizio o un'identità gestita per le risorse di Azure) che esegue l'applicazione. Se l'autenticazione riesce, Microsoft Entra ID restituisce il token di accesso all'applicazione e questa può quindi usare il token di accesso per autorizzare le richieste al bus di servizio di Azure.
Le sezioni seguenti illustrano come configurare l'applicazione nativa o l'applicazione Web per l'autenticazione con Microsoft Identity Platform 2.0. Per altre informazioni su Microsoft Identity Platform 2.0, vedere Panoramica di Microsoft Identity Platform (v2.0).
Per una panoramica del flusso di concessione del codice di OAuth 2.0, vedere Autorizzare l'accesso ad applicazioni Web di Microsoft Entra mediante il flusso di concessione di OAuth 2.0.
Registrare l'applicazione con un tenant di Microsoft Entra
Il primo passaggio nell'uso di Microsoft Entra ID per autorizzare le entità del bus di servizio consiste nel registrare l'applicazione client con un tenant di Microsoft Entra dal portale di Azure. Quando si registra l'applicazione client, si forniscono informazioni sull'applicazione ad AD. Microsoft Entra ID fornisce quindi un ID client (detto anche ID applicazione) che si può usare per associare l'applicazione al runtime di Microsoft Entra. Per altre informazioni sull'ID client, vedere Oggetti applicazione e oggetti entità servizio in Microsoft Entra ID.
Seguire la procedura descritta nella Guida introduttiva: Registrare un'applicazione con Microsoft Identity Platform per registrare l'applicazione con Microsoft Entra ID.
Nota
Se si registra l'applicazione come applicazione nativa, è possibile specificare qualsiasi URI valido come URI di reindirizzamento. Per le applicazioni native, questo valore non deve essere un URL reale. Per le applicazioni Web, l'URI di reindirizzamento deve essere un URI valido, perché specifica l'URL a cui vengono forniti i token.
Al termine della registrazione dell'applicazione verranno visualizzate le opzioni ID applicazione (client) e ID directory (tenant) in Impostazioni:
Importante
Prendere nota del TenantId e dell'ApplicationId. Questi valori saranno necessari per eseguire l'applicazione.
Per altre informazioni sulla registrazione di un'applicazione con Microsoft Entra ID, vedere Integrazione di applicazioni con Microsoft Entra ID.
Creare un segreto client
L'applicazione deve avere un segreto client per dimostrare la propria identità quando richiede un token. Per aggiungere il segreto client, seguire questa procedura.
Passare alla registrazione dell'app nel portale di Azure, se non si è già in quella pagina.
Selezionare Certificati e segreti dal menu a sinistra.
Selezionare Segreti client e selezionare Nuovo segreto client per creare un nuovo segreto.
Fornire una descrizione per il segreto e scegliere l'intervallo di scadenza desiderato e quindi selezionare Aggiungi.
Copiare immediatamente il valore del nuovo segreto in una posizione sicura. Il valore di riempimento viene visualizzato una sola volta.
Autorizzazioni per l'API Bus di servizio
Se l'applicazione è un'applicazione console, è necessario registrare un'applicazione nativa e aggiungere le autorizzazioni dell'API per Microsoft.ServiceBus al set di autorizzazioni richieste. Le applicazioni native richiedono anche un redirect-uri in Microsoft Entra ID, che funge da identificatore. Non è necessario che l'URI sia una destinazione di rete. Per questo esempio usare https://servicebus.microsoft.com
, poiché questo URI è già usato nel codice di esempio.
Assegnare ruoli di Azure usando il portale di Azure
Assegnare uno dei Ruoli del bus di servizio all'entità servizio dell'applicazione nell'ambito desiderato (entità, spazio dei nomi del bus di servizio, gruppo di risorse, sottoscrizione di Azure). Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.
Dopo aver definito il ruolo e il relativo ambito, è possibile testare questo comportamento con l'esempio in GitHub.
Autenticazione del client del bus di servizio
Dopo aver registrato l'applicazione e averle concesso le autorizzazioni per inviare/ricevere dati nel bus di servizio di Azure, è possibile autenticare il client con le credenziali del segreto client, in modo che sia possibile effettuare richieste al bus di servizio di Azure.
Per un elenco degli scenari per cui è supportata l'acquisizione dei token, vedere la sezione Scenari del repository GitHub Microsoft Authentication Library (MSAL) per .NET .
Usando la libreria Azure.Messaging.ServiceBus più recente, è possibile autenticare ServiceBusClient con ClientSecretCredential, definito nella libreria Azure.Identity.
TokenCredential credential = new ClientSecretCredential("<tenant_id>", "<client_id>", "<client_secret>");
var client = new ServiceBusClient("<fully_qualified_namespace>", credential);
Se si usano i pacchetti .NET meno recenti, vedere gli esempi RoleBasedAccessControl nel repository di esempi azure-service-bus.
Passaggi successivi
- Per ulteriori informazioni sul controllo degli accessi in base al ruolo di Azure, vedere Che cos'è il controllo degli accessi in base al ruolo di Azure?
- Per informazioni su come assegnare e gestire le assegnazioni di ruolo di Azure con Azure PowerShell, l'interfaccia della riga di comando di Azure o l'API REST, vedere gli articoli seguenti:
- Aggiungere o rimuovere assegnazioni di ruolo di Azure con Azure PowerShell
- Aggiungere o rimuovere assegnazioni di ruolo di Azure tramite l'interfaccia della riga di comando di Azure
- Aggiungere o rimuovere assegnazioni di ruolo di Azure tramite l'API REST
- Aggiungere o rimuovere assegnazioni di ruolo di Azure tramite modelli di Azure Resource Manager
Per altre informazioni sulla messaggistica del bus di servizio, vedere gli argomenti seguenti.