Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le identità gestite per le risorse di Azure consentono all'applicazione di eseguire l'autenticazione per bus di servizio di Azure senza archiviare le credenziali nel codice. Azure gestisce automaticamente l'identità e le relative credenziali.
L'archiviazione delle credenziali nel codice crea rischi per la sicurezza e un sovraccarico di manutenzione. Le identità gestite eliminano questi problemi fornendo la gestione automatica delle credenziali tramite Microsoft Entra ID.
Questo articolo illustra come configurare l'autenticazione dell'identità gestita per bus di servizio in modo che l'applicazione possa inviare e ricevere messaggi in modo sicuro senza credenziali hardcoded.
Prerequisiti
Per usare le identità gestite con il bus di servizio di Azure, è necessario:
Una sottoscrizione di Azure. Se non ne hai uno, crea un account gratuito prima di iniziare.
Namespace di bus di servizio di Azure. Per creare uno, vedere Creare uno spazio dei nomi del bus di servizio.
Un'identità gestita abilitata nella risorsa di calcolo di Azure. See:
È possibile disabilitare l'autenticazione tramite chiave SAS (firma di accesso condiviso o locale) per un namespace di bus di servizio e consentire solo l'autenticazione tramite Microsoft Entra. Per istruzioni dettagliate, vedere Disabilitare l'autenticazione locale.
Assegnare un ruolo del bus di servizio all'identità gestita
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 offre ruoli predefiniti di Azure che includono set comuni di autorizzazioni per l'accesso alle entità del bus di servizio. È anche possibile definire ruoli personalizzati.
La tabella seguente elenca i ruoli predefiniti di Azure per autorizzare l'accesso a uno spazio dei nomi del bus di servizio:
| Ruolo | Descrizione |
|---|---|
| Proprietario dei dati del Service Bus di Azure | Accesso completo al namespace del bus di servizio e alle relative entità (code, argomenti, sottoscrizioni e filtri) |
| Mittente dei dati del bus di servizio di Azure | Possibilità di inviare messaggi a code e argomenti del bus di servizio |
| Ricevitore dati del bus di servizio di Azure | Possibilità di ricevere messaggi dalle code e dalle sottoscrizioni del bus di servizio |
Informazioni sui livelli di ambito RBAC del bus di servizio
Prima di assegnare un ruolo di Azure, determinare l'ambito di accesso necessario all'identità gestita. Concedere solo l'ambito più ristretto 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 di argomento: l'assegnazione di ruolo si applica solo all'entità di messaggistica specifica.
- Spazio dei nomi del Bus di Servizio: l'assegnazione del ruolo si estende sull'intera topologia del Bus di Servizio nello spazio dei nomi.
- 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 bus di servizio in tutti i gruppi di risorse nella sottoscrizione di Azure.
La propagazione delle assegnazioni di ruolo di Azure può richiedere fino a cinque minuti.
Assegnare un ruolo a un'identità gestita nel portale di Azure
Passare allo spazio dei nomi, alla coda o all'argomento del bus di servizio.
Nel menu a sinistra selezionare Controllo di accesso (IAM).
Seleziona Aggiungi>Aggiungi assegnazione ruolo.
Nella scheda Ruolo selezionare il ruolo appropriato per i dati del bus di servizio.
Nella scheda Membri selezionare Identità >Selezionare membri.
Selezionare l'identità gestita per la risorsa di Azure.
Seleziona Rivedi + assegna.
Per altre informazioni, vedere Assegnare ruoli di Azure tramite il portale di Azure.
Assegnare un ruolo usando l'interfaccia della riga di comando di Azure
Il portale di Azure non supporta l'assegnazione di identità gestite ai ruoli di bus di servizio a livello di sottoscrizione dell'argomento. Usare il comando az role assignment create dell'interfaccia della riga di comando di Azure per assegnare un ruolo in qualsiasi ambito:
az role assignment create \
--role $service_bus_role \
--assignee $assignee_id \
--scope /subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.ServiceBus/namespaces/$service_bus_namespace/topics/$service_bus_topic/subscriptions/$service_bus_subscription
Per altre informazioni sulla definizione dei ruoli predefiniti, vedere Informazioni sulle definizioni dei ruoli di Azure. Per informazioni sulla creazione di ruoli personalizzati di Azure, consultare Ruoli personalizzati di Azure.
Nota
Se il servizio di origine o l'app non si riavvia dopo la rimozione dell'identità gestita dal ruolo di controllo degli accessi in base al ruolo del bus di servizio, l'app di origine potrebbe continuare a inviare o ricevere messaggi al/dal bus di servizio fino alla scadenza del token. La validità predefinita del token è di 24 ore. Questo comportamento è previsto dalla progettazione.
Dopo aver rimosso l'identità gestita dell'origine dal ruolo RBAC, riavviare l'app o il servizio di origine per far scadere immediatamente il token e impedirne l'invio o la ricezione di messaggi dall'entità del bus di servizio.
Connettersi al bus di servizio usando un'identità gestita negli SDK di Azure
Gli SDK di Azure per .NET, Java, JavaScript e Python supportano l'autenticazione delle identità gestite con il bus di servizio. L'esempio seguente illustra come connettersi usando .NET SDK.
In .NET l'oggetto ServiceBusClient viene inizializzato usando un costruttore che accetta uno spazio dei nomi completo e le credenziali del token (TokenCredential).
DefaultAzureCredential deriva da TokenCredential, che usa automaticamente l'identità gestita configurata per l'app. La credenziale del token gestisce automaticamente flusso del contesto dell'identità gestita nel bus di servizio e l'handshake di autorizzazione. Si tratta di un modello più semplice rispetto all'utilizzo di SAS.
var client = new ServiceBusClient("contoso.servicebus.windows.net", new DefaultAzureCredential());
Inviare e ricevere messaggi come di consueto tramite ServiceBusSender e ServiceBusReceiver o ServiceBusProcessor.
Per istruzioni dettagliate su come inviare e ricevere messaggi usando un'identità gestita, vedere gli argomenti di avvio rapido seguenti. Questi avvii rapidi includono il codice per usare un'entità servizio per inviare e ricevere messaggi, ma il codice è lo stesso per usare un'identità gestita.
Nota
Le identità gestite funzionano solo all'interno dell'ambiente Azure, nel servizio app di Azure, nelle macchine virtuali di Azure e nei set di scalabilità. Per le applicazioni .NET, la libreria Microsoft.Azure.Services.AppAuthentication (usata dal pacchetto NuGet bus di servizio) fornisce un'astrazione su questo protocollo e supporta lo sviluppo locale. È possibile testare il codice in locale usando l'account utente da Visual Studio, dall'interfaccia della riga di comando di Azure o dall'autenticazione integrata Microsoft Entra. Per altre informazioni, vedere la libreria client di App Authentication per .NET.