Autenticazione e autorizzazione con Microsoft Entra ID

Questo articolo descrive come autenticare Griglia di eventi di Azure client di pubblicazione usando Microsoft Entra ID.

Panoramica

Microsoft Identity Platform offre un'autenticazione integrata e la gestione del controllo di accesso per risorse e applicazioni che usano Microsoft Entra ID come provider di identità. Usare Microsoft Identity Platform per fornire supporto per l'autenticazione e l'autorizzazione nelle applicazioni. Si basa su standard aperti come OAuth 2.0 e OpenID Connessione e offre strumenti e librerie open source che supportano molti scenari di autenticazione. Fornisce funzionalità avanzate, ad esempio l'accesso condizionale, che consente di impostare criteri che richiedono l'autenticazione a più fattori o di consentire l'accesso da posizioni specifiche, ad esempio.

Un vantaggio che migliora la posizione di sicurezza quando si usa Microsoft Entra ID è che non è necessario archiviare le credenziali, ad esempio le chiavi di autenticazione, nel codice o nei repository. Al contrario, ci si basa sull'acquisizione di token di accesso OAuth 2.0 da Microsoft Identity Platform che l'applicazione presenta durante l'autenticazione in una risorsa protetta. È possibile registrare l'applicazione di pubblicazione degli eventi con l'ID Microsoft Entra e ottenere un'entità servizio associata all'app gestita e usata. È invece possibile usare identità gestite, assegnate dal sistema o assegnate dall'utente, per un modello di gestione delle identità ancora più semplice, poiché alcuni aspetti del ciclo di vita delle identità vengono gestiti automaticamente.

Il controllo degli accessi in base al ruolo consente di configurare l'autorizzazione in modo che determinate entità di sicurezza (identità per utenti, gruppi o app) dispongano di autorizzazioni specifiche per eseguire operazioni sulle risorse di Azure. In questo modo, l'entità di sicurezza usata da un'applicazione client che invia eventi a Griglia di eventi deve avere il ruolo Controllo degli accessi in base al ruolo Mittente dati eventGrid associato.

Entità di sicurezza

Esistono due ampie categorie di entità di sicurezza applicabili quando si discute dell'autenticazione di un client di pubblicazione di Griglia di eventi:

  • Identità gestite. Un'identità gestita può essere assegnata dal sistema, che viene abilitata in una risorsa di Azure ed è associata solo a tale risorsa o a un utente assegnato in modo esplicito, che viene creato e denominato in modo esplicito. Le identità gestite assegnate dall'utente possono essere associate a più risorse.
  • Entità di sicurezza dell'applicazione. Si tratta di un tipo di entità di sicurezza che rappresenta un'applicazione, che accede alle risorse protette da Microsoft Entra ID.

Indipendentemente dall'entità di sicurezza usata, un'identità gestita o un'entità di sicurezza dell'applicazione, il client usa tale identità per eseguire l'autenticazione prima dell'ID di Microsoft Entra e ottenere un token di accesso OAuth 2.0 inviato con richieste durante l'invio di eventi a Griglia di eventi. Tale token è firmato in modo crittografico e una volta che Griglia di eventi lo riceve, il token viene convalidato. Ad esempio, il gruppo di destinatari (il destinatario previsto del token) viene confermato come Griglia di eventi (https://eventgrid.azure.net), tra le altre cose. Il token contiene informazioni sull'identità client. Griglia di eventi accetta tale identità e verifica che al client sia assegnato il ruolo Mittente dati EventGrid. Più precisamente, Griglia di eventi verifica che l'identità disponga dell'autorizzazione Microsoft.EventGrid/events/send/action in un ruolo controllo degli accessi in base al ruolo associato all'identità prima di consentire il completamento della richiesta di pubblicazione dell'evento.

Se si usa l'SDK di Griglia di eventi, non è necessario preoccuparsi dei dettagli su come implementare l'acquisizione dei token di accesso e su come includerlo con ogni richiesta a Griglia di eventi perché gli SDK del piano dati di Griglia di eventi lo fanno automaticamente.

Passaggi di configurazione client per l'uso dell'autenticazione di Microsoft Entra

Eseguire la procedura seguente per configurare il client per l'uso dell'autenticazione di Microsoft Entra quando si inviano eventi a uno spazio dei nomi di argomento, dominio o partner.

  1. Creare o usare un'entità di sicurezza da usare per l'autenticazione. È possibile usare un'identità gestita o un'entità di sicurezza dell'applicazione.
  2. Concedere l'autorizzazione a un'entità di sicurezza per pubblicare eventi assegnando il ruolo Mittente dati EventGrid all'entità di sicurezza.
  3. Usare l'SDK di Griglia di eventi per pubblicare eventi in una Griglia di eventi.

Autenticazione con un'identità gestita

Le identità gestite sono identità associate alle risorse di Azure. Le identità gestite forniscono un'identità usata da applicazioni quando si usano risorse di Azure che supportano l'autenticazione di Microsoft Entra. Le applicazioni possono usare l'identità gestita della risorsa di hosting, ad esempio una macchina virtuale o un servizio app Azure, per ottenere i token Microsoft Entra presentati con la richiesta durante la pubblicazione di eventi in Griglia di eventi. Quando l'applicazione si connette, Griglia di eventi associa il contesto dell'entità gestita al client. Una volta associata a un'identità gestita, il client di pubblicazione di Griglia di eventi può eseguire tutte le operazioni autorizzate. L'autorizzazione viene concessa associando un'entità gestita a un ruolo Controllo degli accessi in base al ruolo di Griglia di eventi.

L'identità gestita fornisce ai servizi di Azure un'identità gestita automaticamente in Microsoft Entra ID. A differenza di altri metodi di autenticazione, non è necessario archiviare e proteggere le chiavi di accesso o le firme di accesso condiviso nel codice o nella configurazione dell'applicazione, per l'identità stessa o per le risorse a cui è necessario accedere.

Per autenticare il client di pubblicazione degli eventi usando identità gestite, decidere prima di tutto il servizio di Azure di hosting per l'applicazione client e quindi abilitare identità gestite assegnate dal sistema o assegnate dall'utente in tale istanza del servizio di Azure. Ad esempio, è possibile abilitare le identità gestite in una macchina virtuale, un servizio app Azure o un Funzioni di Azure.

Dopo aver configurato un'identità gestita in un servizio di hosting, assegnare l'autorizzazione per pubblicare eventi in tale identità.

Eseguire l'autenticazione con un'entità di sicurezza di un'applicazione client

Oltre alle identità gestite, un'altra opzione di identità consiste nel creare un'entità di sicurezza per l'applicazione client. A tale scopo, è necessario registrare l'applicazione con Microsoft Entra ID. La registrazione dell'applicazione è un gesto tramite il quale si delega il controllo di gestione delle identità e degli accessi a Microsoft Entra ID. Seguire la procedura descritta nella sezione Registrare un'applicazione e nella sezione Aggiungere un segreto client. Assicurarsi di esaminare i prerequisiti prima di iniziare.

Dopo aver ottenuto un'entità di sicurezza dell'applicazione e aver seguito i passaggi precedenti, assegnare l'autorizzazione per pubblicare eventi in tale identità.

Nota

Quando si registra un'applicazione nel portale, un oggetto applicazione e un'entità servizio vengono creati automaticamente nel tenant principale. In alternativa, è possibile usare Microsot Graph per registrare l'applicazione. Tuttavia, se si registra o si crea un'applicazione usando le API Microsoft Graph, la creazione dell'oggetto entità servizio è un passaggio separato.

Assegnare l'autorizzazione a un'entità di sicurezza per pubblicare eventi

L'identità usata per pubblicare eventi in Griglia di eventi deve disporre dell'autorizzazione Microsoft.EventGrid/events/send/action che consente di inviare eventi a Griglia di eventi. Tale autorizzazione è inclusa nel ruolo RBAC predefinito Mittente dati griglia di eventi. Questo ruolo può essere assegnato a un'entità di sicurezza, per un determinato ambito, che può essere un gruppo di gestione, una sottoscrizione di Azure, un gruppo di risorse o uno specifico argomento, dominio o spazio dei nomi partner di Griglia di eventi specifico. Seguire la procedura descritta in Assegnare i ruoli di Azure per assegnare un'entità di sicurezza al ruolo Mittente dati EventGrid e in questo modo concedere a un'applicazione l'accesso all'entità di sicurezza per l'invio di eventi. In alternativa, è possibile definire un ruolo personalizzato che includa l'autorizzazione e assegnare tale ruolo personalizzato all'entità Microsoft.EventGrid/events/send/action di sicurezza.

Con i privilegi di controllo degli accessi in base al ruolo è ora possibile compilare l'applicazione client per inviare eventi a Griglia di eventi .

Nota

Griglia di eventi supporta più ruoli controllo degli accessi in base al ruolo ai fini dell'invio di eventi. Per altre informazioni, vedereRuoli predefiniti di Griglia di eventi.

Pubblicare eventi usando gli SDK client di Griglia di eventi

Usare l'SDK del piano dati di Griglia di eventi per pubblicare eventi in Griglia di eventi. L'SDK di Griglia di eventi supporta tutti i metodi di autenticazione, inclusa l'autenticazione di Microsoft Entra.

Ecco il codice di esempio che pubblica eventi in Griglia di eventi usando .NET SDK. È possibile ottenere l'endpoint dell'argomento nella pagina Panoramica dell'argomento di Griglia di eventi nella portale di Azure. È nel formato : https://<TOPIC-NAME>.<REGION>-1.eventgrid.azure.net/api/events.

ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredential();
EventGridPublisherClient client = new EventGridPublisherClient( new Uri("<TOPIC ENDPOINT>"), managedIdentityCredential);


EventGridEvent egEvent = new EventGridEvent(
        "ExampleEventSubject",
        "Example.EventType",
        "1.0",
        "This is the event data");

// Send the event
await client.SendEventAsync(egEvent);

Prerequisiti

Di seguito sono riportati i prerequisiti per l'autenticazione in Griglia di eventi.

Pubblicare eventi con l'autenticazione di Microsoft Entra

Per inviare eventi a un argomento, a un dominio o a uno spazio dei nomi partner, è possibile compilare il client nel modo seguente. La versione dell'API che ha fornito il supporto per l'autenticazione di Microsoft Entra è 2018-01-01. Usare la versione dell'API o una versione più recente nell'applicazione.

Esempio:

Questo frammento di codice C# crea un client di pubblicazione di Griglia di eventi usando un'applicazione (entità servizio) con un segreto client, per abilitare il metodo DefaultAzureCredential necessario aggiungere la libreria Azure.Identity. Se si usa l'SDK ufficiale, l'SDK gestisce automaticamente la versione.

Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", "");
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", "");
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", "");

EventGridPublisherClient client = new EventGridPublisherClient(new Uri("your-event-grid-topic-domain-or-partner-namespace-endpoint"), new DefaultAzureCredential());

Per altre informazioni, consultare gli articoli seguenti:

Disabilitare l'autenticazione della chiave e della firma di accesso condiviso

L'autenticazione Microsoft Entra offre un supporto di autenticazione superiore rispetto a quello offerto dalla chiave di accesso o dall'autenticazione con token di firma di accesso condiviso ( SAS). Con l'autenticazione Microsoft Entra, l'identità viene convalidata rispetto al provider di identità Microsoft Entra. Gli sviluppatori non dovranno gestire le chiavi nel codice se si usa l'autenticazione Microsoft Entra. È anche possibile trarre vantaggio da tutte le funzionalità di sicurezza integrate in Microsoft Identity Platform, ad esempio l'accesso condizionale che consente di migliorare la posizione di sicurezza dell'applicazione.

Dopo aver deciso di usare l'autenticazione di Microsoft Entra, è possibile disabilitare l'autenticazione in base alle chiavi di accesso o ai token di firma di accesso condiviso.

Nota

Le chiavi acess o l'autenticazione con token di firma di accesso condiviso sono una forma di autenticazione locale. Si sente talvolta fare riferimento a "autenticazione locale" quando si discute di questa categoria di meccanismi di autenticazione che non si basano su Microsoft Entra ID. Il parametro API usato per disabilitare l'autenticazione locale viene chiamato, in modo appropriato, disableLocalAuth.

Azure portal

Quando si crea un nuovo argomento, è possibile disabilitare l'autenticazione locale nella scheda Avanzate della pagina Crea argomento .

Screenshot showing the Advanced tab of Create Topic page when you can disable local authentication.

Per un argomento esistente, seguire questa procedura per disabilitare l'autenticazione locale:

  1. Passare alla pagina Argomento di Griglia di eventi per l'argomento e selezionare Abilitato in Autenticazione locale

    Screenshot showing the Overview page of an existing topic.

  2. Nella finestra popup Autenticazione locale selezionare Disabilitato e selezionare OK.

    Screenshot showing the Local Authentication window.

Interfaccia della riga di comando di Azure

Il comando dell'interfaccia della riga di comando seguente illustra come creare un argomento personalizzato con l'autenticazione locale disabilitata. La funzionalità di disabilitazione dell'autenticazione locale è attualmente disponibile come anteprima ed è necessario usare la versione 2021-06-01-previewdell'API .

az resource create --subscription <subscriptionId> --resource-group <resourceGroup> --resource-type Microsoft.EventGrid/topics --api-version 2021-06-01-preview --name <topicName> --location <location> --properties "{ \"disableLocalAuth\": true}"

Per riferimento, di seguito sono riportati i valori del tipo di risorsa che è possibile usare in base all'argomento che si sta creando o aggiornando.

Tipo di argomento Tipo di risorsa
Domini Microsoft.EventGrid/domains
Spazio dei nomi partner Microsoft.EventGrid/partnerNamespaces
Argomento personalizzato Microsoft.EventGrid/topics

Azure PowerShell

Se si usa PowerShell, usare i cmdlet seguenti per creare un argomento personalizzato con l'autenticazione locale disabilitata.


Set-AzContext -SubscriptionId <SubscriptionId>

New-AzResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.EventGrid/topics -ApiVersion 2021-06-01-preview -ResourceName <TopicName> -Location <Location> -Properties @{disableLocalAuth=$true}

Nota

Risorse