Condividi tramite


Come usare le identità gestite con il bus di servizio di Azure

Le identità gestite per le risorse di Azure offrono ai servizi di Azure un'identità gestita automaticamente in Microsoft Entra ID. È possibile usare questa identità per eseguire l'autenticazione al bus di servizio di Azure senza archiviare le credenziali nel codice.

Questo articolo illustra come abilitare un'identità gestita, assegnare il ruolo del bus di servizio appropriato e connettersi al bus di servizio dal codice dell'applicazione.

Nota

Se non si ha familiarità con le identità gestite, vedere Identità gestite per le risorse di Azure.

Prerequisiti

Per usare le identità gestite con il bus di servizio di Azure, è necessario:

Importante

È possibile disabilitare l'autenticazione della chiave SAS o locale per un namespace di Service Bus e permettere 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 fornisce ruoli predefiniti di Azure che includono set comuni di autorizzazioni usate per accedere 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 Service Bus e alle relative entità (code, argomenti, sottoscrizioni e filtri)
Mittente dei dati del bus di servizio di Azure Inviare messaggi alle code e agli argomenti del bus di servizio
Ricevitore dati del bus di servizio di Azure Ricevere messaggi da code e sottoscrizioni del bus di servizio

Assegnare un ruolo nel portale di Azure

Per assegnare un ruolo a un'identità gestita nel portale di Azure:

  1. Passare allo spazio dei nomi, alla coda o all'argomento del bus di servizio.
  2. Selezionare Controllo di accesso (IAM) dal menu a sinistra.
  3. Seleziona Aggiungi>Aggiungi assegnazione ruolo.
  4. Nella scheda Ruolo selezionare il ruolo appropriato per i dati del bus di servizio.
  5. Nella scheda Membri selezionare Identità gestita e quindi selezionare Seleziona membri.
  6. Selezionare l'identità gestita per la risorsa di Azure.
  7. Seleziona Rivedi + assegna.

Per altre informazioni, vedere Assegnare ruoli di Azure tramite il portale di Azure.

Scegliere l'ambito della risorsa

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: l'assegnazione di ruolo si applica all'entità del bus di servizio 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: l'assegnazione di ruolo si applica a tutte le risorse del bus di servizio in ogni gruppo di risorse della sottoscrizione.

    Nota

    La propagazione delle assegnazioni di ruolo di Azure può richiedere fino a cinque minuti.

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 Service Bus 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 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.

Nota

Se il servizio di origine o l'app non viene riavviato dopo aver rimosso l'identità gestita dal ruolo RBAC del Service Bus, l'app di origine potrebbe continuare a inviare o ricevere messaggi a o da l'entità del Service Bus fino alla scadenza del token (la validità del token predefinita è di 24 ore). Questo comportamento è impostato a livello di 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 Service Bus.

Connettersi al bus di servizio usando l'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 con .NET 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 nel bus di servizio e l'handshake di autorizzazione vengono gestiti automaticamente dalla credenziale del token. È un modello più semplice rispetto all'utilizzo di SAS.

var client = new ServiceBusClient("contoso.servicebus.windows.net", new DefaultAzureCredential());

I messaggi si inviano e si ricevono come di consueto tramite ServiceBusSender e ServiceBusReceiver o ServiceBusProcessor.

Per istruzioni dettagliate su come inviare e ricevere messaggi usando un'identità gestita, vedere le guide introduttive seguenti. Queste guide di avvio rapido includono il codice per utilizzare un'entità servizio per inviare e ricevere messaggi, ma il codice è lo stesso per utilizzare un'identità gestita.

Nota

Le identità gestite funzionano solo all'interno dell'ambiente di Azure, nel servizio 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, fornisce un'astrazione su 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 di Visual Studio, l'interfaccia della riga di comando di Azure o l'autenticazione integrata di Microsoft Entra. 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