Autenticare un'identità gestita con l'ID Microsoft Entra per accedere alle risorse di bus di servizio di Azure

Le identità gestite per le risorse di Azure offrono servizi di Azure con un'identità gestita automaticamente in Microsoft Entra ID. È possibile usare questa identità per eseguire l'autenticazione a qualsiasi servizio, ad esempio bus di servizio di Azure che supporta l'autenticazione di Microsoft Entra, senza avere credenziali nel codice. Se non si ha familiarità con le identità gestite, vedere Identità gestite per le risorse di Azure prima di continuare a leggere questo articolo.

Ecco i passaggi generali per usare un'identità gestita per accedere a un'entità bus di servizio:

  1. Abilitare l'identità gestita per l'app client o l'ambiente. Ad esempio, abilitare l'identità gestita per l'app del servizio app Azure, l'app Funzioni di Azure o una macchina virtuale in cui è in esecuzione l'app. Ecco gli articoli utili per questo passaggio:

  2. Assegnare bus di servizio di Azure proprietario dei dati, bus di servizio di Azure mittente dati o bus di servizio di Azure ruolo Ricevitore dati all'identità gestita nell'ambito appropriato (sottoscrizione di Azure, gruppo di risorse, spazio dei nomi bus di servizio o bus di servizio coda o argomento). Per istruzioni sull'assegnazione di un ruolo a un'identità gestita, vedere Assegnare ruoli di Azure usando il portale di Azure.

  3. Nell'applicazione usare l'identità gestita e l'endpoint per bus di servizio spazio dei nomi per connettersi allo spazio dei nomi. Ad esempio, in .NET si usa il costruttore ServiceBusClient che accetta TokenCredential e fullyQualifiedNamespace (una stringa, ad esempio: cotosons.servicebus.windows.net) parametri per connettersi a bus di servizio usando l'identità gestita. Si passa DefaultAzureCredential, che deriva da TokenCredential e usa l'identità gestita.

    Importante

    È possibile disabilitare l'autenticazione della chiave di firma di accesso condiviso o locale per uno spazio dei nomi bus di servizio e consentire solo l'autenticazione di Microsoft Entra. Per istruzioni dettagliate, vedere Disabilitare l'autenticazione locale.

Ruoli predefiniti di Azure per bus di servizio di Azure

Microsoft Entra autorizza l'accesso alle risorse protette tramite il controllo degli accessi in base al ruolo di Azure. bus di servizio di Azure definisce un set di ruoli predefiniti di Azure che includono set comuni di autorizzazioni usate per accedere a bus di servizio entità. È anche possibile definire ruoli personalizzati per l'accesso ai dati.

Azure offre i ruoli predefiniti di Azure seguenti per autorizzare l'accesso a uno spazio dei nomi bus di servizio:

Per assegnare un ruolo a un'identità gestita nella portale di Azure, usare la pagina Controllo di accesso (IAM). Passare a questa pagina selezionando Controllo di accesso (IAM) nella pagina spazio dei nomi bus di servizio pagina o bus di servizio coda o bus di servizio pagina dell'argomento. Per istruzioni dettagliate sull'assegnazione di un ruolo, vedere Assegnare ruoli di Azure usando il portale di Azure.

Ambito risorsa

Prima di assegnare un ruolo di Azure a un'identità gestita, determinare l'ambito di accesso che l'identità gestita deve 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 bus di servizio, a partire dall'ambito più ristretto:

  • Coda, argomento o sottoscrizione: l'assegnazione di ruolo si applica all'entità bus di servizio specifica.

  • bus di servizio spazio dei nomi: l'assegnazione di ruolo si estende sull'intera topologia di bus di servizio nello spazio dei nomi e nel gruppo di consumer associato.

  • Gruppo di risorse: l'assegnazione di ruolo si applica a tutte le risorse bus di servizio nel gruppo di risorse.

  • Sottoscrizione: l'assegnazione di ruolo si applica a tutte le risorse 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.

Attualmente, il portale di Azure non supporta l'assegnazione di utenti, gruppi o identità gestite a bus di servizio ruoli di Azure a livello di sottoscrizione dell'argomento. Ecco un esempio di uso del comando dell'interfaccia della riga di comando di Azure: az-role-assignment-create per assegnare un'identità a un ruolo di Azure bus di servizio:

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. Per informazioni sulla creazione di ruoli personalizzati di Azure, vedere Ruoli personalizzati di Azure.

Uso di SDK

In .NET l'oggetto ServiceBusClient viene inizializzato usando un costruttore che accetta uno spazio dei nomi completo e un oggetto TokenCredential. DefaultAzureCredential deriva da TokenCredential, che usa automaticamente l'identità gestita configurata per l'app. Il flusso del contesto dell'identità gestita per bus di servizio e l'handshake di autorizzazione vengono gestiti automaticamente dalla credenziale del token. Si tratta di un modello più semplice rispetto all'uso della firma di accesso condiviso.

var client = new ServiceBusClient('cotosons.servicebus.windows.net', new DefaultAzureCredential());

I messaggi vengono inviati e ricevuti 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 argomenti di avvio rapido includono il codice per usare un'entità servizio per inviare e ricevere messaggi, ma il codice è lo stesso per l'uso di un'identità gestita.

Nota

L'identità gestita funziona solo all'interno dell'ambiente di Azure, nei servizi app, nelle macchine virtuali di Azure e nei set di scalabilità. Per le applicazioni .NET, la libreria Microsoft.Azure.Services.AppAuthentication, usata dal pacchetto NuGet del bus di servizio, rappresenta un'astrazione di questo protocollo e supporta un'esperienza di sviluppo locale. Questa libreria consente anche di testare il codice in locale nel computer di sviluppo usando l'account utente da Visual Studio, dall'interfaccia della riga di comando di Azure 2.0 o tramite l'autenticazione integrata di Active Directory. Per altre informazioni sulle opzioni di sviluppo locale con questa libreria, vedere Autenticazione da servizio a servizio ad Azure Key Vault usando .NET.

Passaggi successivi

Vedere questo esempio di applicazione Web .NET in GitHub, che usa un'identità gestita per connettersi a bus di servizio per inviare e ricevere messaggi. Aggiungere l'identità del servizio app al ruolo proprietario dati bus di servizio di Azure.