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.
- Creare o usare un'entità di sicurezza da utilizzare per l'autenticazione. È possibile usare un'identità gestita o un'entità di sicurezza dell'applicazione.
- Concedere l'autorizzazione a un'entità di sicurezza per pubblicare gli eventi assegnando il ruolo Mittente dati Griglia di eventi all'entità di sicurezza.
- 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.
- Installare l'SDK nell'applicazione.
- Installare la libreria client di Identità di Azure. L'SDK di Griglia di eventi dipende dalla libreria client di Identità di Azure per l'autenticazione.
- Uno spazio dei nomi partner, un dominio o un argomento creato a cui l'applicazione invia 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:
- Libreria client di Griglia di eventi di Azure per Java
- Libreria client di Griglia di eventi di Azure per .NET
- Libreria client di Griglia di eventi di Azure per JavaScript
- Libreria client di Griglia di eventi di Azure per Python
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.
Per un argomento esistente, seguire questa procedura per disabilitare l'autenticazione locale:
Passare alla pagina Argomento di Griglia di eventi per l'argomento, e selezionare Abilitato in Autenticazione locale
Nella finestra popup Autenticazione locale selezionare Disabilitato e selezionare OK.
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
- Per informazioni sull'uso della chiave di accesso o dell'autenticazione della firma di accesso condiviso, vedere Autenticare i client di pubblicazione con chiavi o token di firma di accesso condiviso
- Questo articolo illustra l'autenticazione durante la pubblicazione di eventi in Griglia di eventi (ingresso eventi). L'autenticazione di Griglia di eventi durante la distribuzione di eventi (uscita eventi) è l'oggetto dell'articolo Autenticare il recapito di eventi ai gestori eventi.
Risorse
- SDK del piano dati
- SDK Java: GitHub | esempi | guida alla migrazione da una versione SDK precedente
- SDK .NET: GitHub | esempi | guida alla migrazione da una versione SDK precedente
- SDK Python: GitHub | esempi | guida alla migrazione da una versione SDK precedente
- SDK JavaScript: GitHub | esempi | guida alla migrazione da una versione SDK precedente
- Blog di SDK di Griglia di eventi
- Libreria client di Identità di Azure
- Informazioni sulle identità gestite
- Informazioni su come usare le identità gestite per servizio app e Funzioni di Azure
- Informazioni sulle entità servizio e applicazione
- Informazioni sulla registrazione di un'applicazione con Microsoft Identity Platform.
- Informazioni sul funzionamento dell'autorizzazione (controllo degli accessi in base al ruolo).
- Informazioni sui ruoli di controllo degli accessi in base al ruolo predefiniti di Griglia di eventi, incluso il ruolo Mittente dati Griglia di eventi. Elenco dei ruoli di Griglia di eventi.
- Informazioni sull'assegnazione di ruoli di controllo degli accessi in base al ruolo alle identità.
- Informazioni su come definire ruoli di controllo degli accessi in base al ruolo personalizzati.
- Informazioni sugli oggetti di entità servizio e applicazione in Microsoft Entra ID.
- Informazioni sui token di accesso di Microsoft Identity Platform.
- Informazioni su Microsoft Identity Platform e flusso del codice di autenticazione OAuth 2.0