Condividi tramite


Autenticazione e autorizzazione con Microsoft Entra ID

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

Panoramica

Microsoft Identity Platform offre una gestione del controllo di accesso e autenticazione integrata per le risorse e le 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 Connect e offre strumenti e librerie open source che supportano numerosi scenari di autenticazione. Offre funzioni avanzate come l'accesso condizionale, che consente di impostare criteri che richiedono l'autenticazione a più fattori o di autorizzare l'accesso da posizioni specifiche, ad esempio.

Un vantaggio che migliora la postura di sicurezza quando si usa Microsoft Entra ID è che non è necessario archiviare le credenziali, come 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 Microsoft Entra ID e ottenere un'entità servizio associata all'app gestita e utilizzata. In alternativa, è possibile usare identità gestite, assegnate dal sistema o assegnate dall'utente, per un modello di gestione delle identità ancora più semplice, perché alcuni aspetti del ciclo di vita delle identità vengono gestiti automaticamente per l'utente.

Il controllo degli accessi in base al ruolo (RBAC) 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 associato il ruolo Controllo degli accessi in base al ruolo Mittente dati Griglia di eventi.

Entità di sicurezza

Esistono due ampie categorie di entità di sicurezza applicabili per l'autenticazione di un client di pubblicazione di Griglia di eventi:

  • Identità gestite. Un'identità gestita può essere assegnata dal sistema, e viene abilitata in una risorsa di Azure e associata solo a tale risorsa, o assegnata dall'utente, e viene creata e denominata in modo esplicito. Le identità gestite assegnate dall'utente possono essere associate a più di una risorsa.
  • 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 di Microsoft Entra ID e ottenere un token di accesso OAuth 2.0 inviato con le richieste durante l'invio di eventi a Griglia di eventi. Tale token è firmato in modo crittografico e, una volta ricevuto da Griglia di eventi, 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à del client. Griglia di eventi accetta tale identità e conferma che al client sia assegnato il ruolo di Mittente dati Griglia di eventi. In particolare, Griglia di eventi conferma 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 autorizzare 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 includerli in ogni richiesta a Griglia di eventi, perché gli SDK del piano dati di Griglia di eventi eseguono automaticamente questa operazione.

Passaggi di configurazione del client per l'utilizzo dell'autenticazione di Microsoft Entra

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

  1. Creare o usare un'entità di sicurezza da utilizzare 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 gli eventi assegnando il ruolo Mittente dati Griglia di eventi 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à che le applicazioni usano quando utilizzano le risorse di Azure che supportano l'autenticazione Microsoft Entra. Le applicazioni possono usare l'identità gestita della risorsa di hosting, come una macchina virtuale o un servizio app di Azure, per ottenere i token Microsoft Entra presentati con la richiesta al momento della pubblicazione di eventi in Griglia di eventi. Quando l'applicazione si connette, Griglia di eventi associa il contesto dell'entità gestita al client. Dopo l'associazione 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 (SAS) nel codice o nella configurazione dell'applicazione, né per l'identità stessa, né per le risorse a cui è necessario accedere.

Per autenticare il client di pubblicazione degli eventi usando identità gestite, definire prima di tutto il servizio di Azure di hosting per l'applicazione client, quindi abilitare le 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 di Azure o in Funzioni di Azure.

Dopo aver configurato un'identità gestita in un servizio di hosting, assegnare l'autorizzazione per la pubblicazione di 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 cui si delega il controllo di gestione delle identità e degli accessi a Microsoft Entra ID. Attenersi alla 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 sopra indicati, 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 a parte.

Assegnare l'autorizzazione a un'entità di sicurezza per la pubblicazione di 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 Controllo degli accessi in base al ruolo integrato 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 spazio dei nomi di partner, un dominio o un argomento 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 Griglia di eventi; in questo modo, a un'applicazione viene consentito l'accesso all'entità di sicurezza per inviare eventi. In alternativa, è possibile definire un ruolo personalizzato che include l'autorizzazione Microsoft.EventGrid/events/send/action e assegnare tale ruolo personalizzato all'entità di sicurezza.

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

Nota

Griglia di eventi supporta più ruoli di controllo degli accessi in base al ruolo per scopi diversi dall'invio di eventi. Per altre informazioni, vedere Ruoli 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 Microsoft Entra.

Qui è riportato il codice di esempio che pubblica eventi in Griglia di eventi usando l'SDK .NET. È possibile trovare l'endpoint dell'argomento nella pagina Panoramica dell'argomento Griglia di eventi nel portale di Azure. Presenta il seguente 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 usando l’autenticazione di Microsoft Entra

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

Esempio:

Questo frammento di codice C# crea un client dell'entità 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, vedere 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. Si potrà anche trarre vantaggio da tutte le funzionalità di sicurezza integrate in Microsoft Identity Platform, ad esempio l'accesso condizionale, che consentono 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. a volte si sente parlare di "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 che mostra la scheda Avanzate della pagina Crea argomento quando è possibile disabilitare l'autenticazione locale.

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 che mostra la pagina Panoramica di un argomento esistente.

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

    Screenshot che mostra la finestra Autenticazione locale.

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 dell'API 2021-06-01-preview.

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
Domains (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