Recapito di eventi con un'identità gestita

Questo articolo descrive come usare un'identità del servizio gestita per un argomento di sistema Griglia di eventi di Azure, un argomento personalizzato o un dominio. Usare l'identità per inviare eventi a destinazioni supportate, ad esempio code e argomenti del bus di servizio, Hub eventi e account di archiviazione.

Prerequisiti

  1. Assegnare un'identità assegnata dal sistema o un'identità assegnata dall'utente a un argomento di sistema, a un argomento personalizzato o a un dominio.

  2. Aggiungere l'identità a un ruolo appropriato ( ad esempio, bus di servizio mittente dati) nella destinazione (ad esempio, una coda di bus di servizio). Per i passaggi dettagliati, vedere Aggiungere identità ai ruoli di Azure nelle destinazioni

    Nota

    Attualmente non è possibile recapitare eventi usando endpoint privati. Per altre informazioni, vedere la sezione Endpoint privati alla fine di questo articolo.

Creare sottoscrizioni di eventi che usano un'identità

Dopo aver creato un argomento o un dominio personalizzato di Griglia di eventi o un dominio con un'identità gestita e aver aggiunto l'identità al ruolo appropriato nella destinazione, si è pronti per creare sottoscrizioni che usano l'identità.

Usare il portale di Azure

Quando si crea una sottoscrizione di eventi, viene visualizzata un'opzione per abilitare l'uso di un'identità assegnata dal sistema o di un'identità assegnata dall'utente per un endpoint nella sezione DETTAGLI ENDPOINT.

Ecco un esempio di abilitazione dell'identità assegnata dal sistema durante la creazione di una sottoscrizione di eventi con una coda bus di servizio come destinazione.

Screenshot that shows how to enable an identity when creating an event subscription for a Service Bus queue.

È anche possibile abilitare l'uso di un'identità assegnata dal sistema per l'inserimento di messaggi non recapitabili nella scheda Funzionalità aggiuntive .

Screenshot that shows how to enable a system-assigned identity for dead-lettering.

È possibile abilitare un'identità gestita in una sottoscrizione di eventi dopo la creazione. Nella pagina Sottoscrizione di eventi per la sottoscrizione di eventi passare alla scheda Funzionalità aggiuntive per visualizzare l'opzione . È anche possibile abilitare l'identità per i messaggi non recapitabili in questa pagina.

Screenshot that shows how to enable a system-assigned identity on an existing event subscription.

Se sono state abilitate le identità assegnate dall'utente per l'argomento, nell'elenco a discesa per Tipo di identità gestito verrà visualizzata l'opzione identità assegnata dall'utente abilitata. Se si seleziona Utente assegnato per tipo di identità gestita, è possibile selezionare l'identità assegnata dall'utente che si vuole usare per recapitare gli eventi.

Screenshot that shows how to enable a user-assigned identity on an event subscription.

Usare l'interfaccia della riga di comando di Azure - coda bus di servizio

In questa sezione viene illustrato come usare l'interfaccia della riga di comando di Azure per abilitare l'uso di un'identità assegnata dal sistema per recapitare eventi a una coda di bus di servizio. L'identità deve essere un membro del ruolo Mittente dei dati del bus di servizio di Azure. Deve essere anche un membro del ruolo Collaboratore ai dati del BLOB di archiviazione nell'account di archiviazione usato per i messaggi non recapitabili.

Definire le variabili

Per prima cosa, specificare i valori per le variabili seguenti da usare nel comando dell'interfaccia della riga di comando.

subid="<AZURE SUBSCRIPTION ID>"
rg = "<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname = "<EVENT GRID TOPIC NAME>"

# get the service bus queue resource id
queueid=$(az servicebus queue show --namespace-name <SERVICE BUS NAMESPACE NAME> --name <QUEUE NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)
sb_esname = "<Specify a name for the event subscription>" 

Creare una sottoscrizione di eventi usando un'identità gestita per il recapito

Questo comando di esempio crea una sottoscrizione di eventi per un argomento personalizzato di Griglia di eventi con un tipo di endpoint impostato su bus di servizio coda.

az eventgrid event-subscription create  
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname
    --delivery-identity-endpoint-type servicebusqueue  
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $queueid
    -n $sb_esname 

Creare una sottoscrizione di eventi usando un'identità gestita per il recapito e i messaggi non recapitabili

Questo comando di esempio crea una sottoscrizione di eventi per un argomento personalizzato di Griglia di eventi con un tipo di endpoint impostato su bus di servizio coda. Specifica inoltre che l'identità gestita dal sistema deve essere usata per l'inserimento di messaggi non recapitabili.

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create  
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname 
    --delivery-identity-endpoint-type servicebusqueue
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $queueid
    --deadletter-identity-endpoint $deadletterendpoint 
    --deadletter-identity systemassigned 
    -n $sb_esnameq 

Usare l'interfaccia della riga di comando di Azure - Hub eventi

In questa sezione viene illustrato come usare l'interfaccia della riga di comando di Azure per abilitare l'uso di un'identità assegnata dal sistema per recapitare eventi a un hub eventi. L'identità deve essere un membro del ruolo Mittente dei dati di Hub eventi di Azure. Deve essere anche un membro del ruolo Collaboratore ai dati del BLOB di archiviazione nell'account di archiviazione usato per i messaggi non recapitabili.

Definire le variabili

subid="<AZURE SUBSCRIPTION ID>"
rg = "<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname = "<EVENT GRID CUSTOM TOPIC NAME>"

hubid=$(az eventhubs eventhub show --name <EVENT HUB NAME> --namespace-name <NAMESPACE NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)
eh_esname = "<SPECIFY EVENT SUBSCRIPTION NAME>" 

Creare una sottoscrizione di eventi usando un'identità gestita per il recapito

Questo comando di esempio crea una sottoscrizione di eventi per un argomento personalizzato di Griglia di eventi con un tipo di endpoint impostato su Hub eventi.

az eventgrid event-subscription create  
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname 
    --delivery-identity-endpoint-type eventhub 
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $hubid
    -n $sbq_esname 

Creare una sottoscrizione di eventi usando un'identità gestita per il recapito e il deadletter

Questo comando di esempio crea una sottoscrizione di eventi per un argomento personalizzato di Griglia di eventi con un tipo di endpoint impostato su Hub eventi. Specifica inoltre che l'identità gestita dal sistema deve essere usata per l'inserimento di messaggi non recapitabili.

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname 
    --delivery-identity-endpoint-type servicebusqueue  
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $hubid
    --deadletter-identity-endpoint $eh_deadletterendpoint
    --deadletter-identity systemassigned 
    -n $eh_esname 

Usare l'interfaccia della riga di comando di Azure - coda Archiviazione di Azure

In questa sezione viene illustrato come usare l'interfaccia della riga di comando di Azure per abilitare l'uso di un'identità assegnata dal sistema per recapitare eventi a una coda di Archiviazione di Azure. L'identità deve essere un membro del ruolo Mittente messaggio dati coda Archiviazione nell'account di archiviazione. Deve essere anche un membro del ruolo Collaboratore ai dati del BLOB di archiviazione nell'account di archiviazione usato per i messaggi non recapitabili.

Definire le variabili

subid="<AZURE SUBSCRIPTION ID>"
rg = "<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname = "<EVENT GRID CUSTOM TOPIC NAME>"

# get the storage account resource id
storageid=$(az storage account show --name <STORAGE ACCOUNT NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)

# build the resource id for the queue
queueid="$storageid/queueservices/default/queues/<QUEUE NAME>" 

sa_esname = "<SPECIFY EVENT SUBSCRIPTION NAME>" 

Creare una sottoscrizione di eventi usando un'identità gestita per il recapito

az eventgrid event-subscription create 
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname 
    --delivery-identity-endpoint-type storagequeue  
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $queueid
    -n $sa_esname 

Creare una sottoscrizione di eventi usando un'identità gestita per il recapito e il deadletter

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create  
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname 
    --delivery-identity-endpoint-type storagequeue  
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $queueid
    --deadletter-identity-endpoint $deadletterendpoint 
    --deadletter-identity systemassigned 
    -n $sa_esname 

Endpoint privati

Attualmente non è possibile recapitare eventi usando endpoint privati. Ciò significa che non è disponibile alcun supporto se si dispone di rigidi requisiti di isolamento della rete in cui il traffico degli eventi recapitati non deve lasciare lo spazio IP privato.

Tuttavia, se i requisiti richiedono un modo sicuro per inviare eventi usando un canale crittografato e un'identità nota del mittente (in questo caso Griglia di eventi) usando lo spazio IP pubblico, è possibile recapitare eventi a Hub eventi, bus di servizio o Archiviazione di Azure servizio usando un Griglia di eventi di Azure argomento personalizzato o un dominio con un'identità gestita, come illustrato in questo articolo. È quindi possibile usare un collegamento privato configurato in Funzioni di Azure o il webhook distribuito nella rete virtuale per eseguire il pull degli eventi. Vedere l'esercitazione: Connessione agli endpoint privati con Funzioni di Azure.

In questa configurazione, il traffico passa attraverso l'indirizzo IP pubblico/Internet da Griglia di eventi a Hub eventi, bus di servizio o Archiviazione di Azure, ma il canale può essere crittografato e viene usata un'identità gestita di Griglia di eventi. Se si configura il Funzioni di Azure o il webhook distribuito nella rete virtuale per l'uso di hub eventi, bus di servizio o Archiviazione di Azure tramite collegamento privato, tale sezione del traffico rimarrà evidentemente all'interno di Azure.

Passaggi successivi

Per informazioni sulle identità gestite, vedere Informazioni sulle identità gestite per le risorse di Azure.