Händelseleverans med en hanterad identitet

Den här artikeln beskriver hur du använder en hanterad tjänstidentitet för ett Azure Event Grid-systemavsnitt, anpassat ämne eller en domän. Använd den för att vidarebefordra händelser till mål som stöds, till exempel Service Bus-köer och -ämnen, händelsehubbar och lagringskonton.

Förutsättningar

  1. Tilldela en systemtilldelad identitet eller en användartilldelad identitet till ett systemämne, ett anpassat ämne eller en domän.

  2. Lägg till identiteten till en lämplig roll (till exempel Service Bus Data Sender) på målet (till exempel en Service Bus-kö). Detaljerade steg finns i Lägga till identitet i Azure-roller på mål

    Kommentar

    För närvarande går det inte att leverera händelser med hjälp av privata slutpunkter. Mer information finns i avsnittet Privata slutpunkter i slutet av den här artikeln.

Skapa händelseprenumerationer som använder en identitet

När du har ett anpassat Event Grid-ämne eller ett systemämne eller en domän med en hanterad identitet och har lagt till identiteten i rätt roll på målet är du redo att skapa prenumerationer som använder identiteten.

Använda Azure Portal

När du skapar en händelseprenumeration visas ett alternativ för att aktivera användning av en systemtilldelad identitet eller användartilldelad identitet för en slutpunkt i avsnittet SLUTPUNKTSINFORMATION .

Här är ett exempel på hur du aktiverar systemtilldelad identitet när du skapar en händelseprenumeration med en Service Bus-kö som mål.

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

Du kan också aktivera användning av en systemtilldelad identitet som ska användas för obeställbara bokstäver på fliken Ytterligare funktioner .

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

Du kan aktivera en hanterad identitet för en händelseprenumeration när den har skapats. På sidan Händelseprenumeration för händelseprenumerationen växlar du till fliken Ytterligare funktioner för att se alternativet. Du kan också aktivera identitet för obeställbara bokstäver på den här sidan.

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

Om du har aktiverat användartilldelade identiteter för ämnet visas alternativet användartilldelad identitet aktiverad i listrutan för Hanterad identitetstyp. Om du väljer Användartilldelad för Hanterad identitetstyp kan du sedan välja den användartilldelade identitet som du vill använda för att leverera händelser.

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

Använda Azure CLI – Service Bus-kön

I det här avsnittet får du lära dig hur du använder Azure CLI för att aktivera användning av en systemtilldelad identitet för att leverera händelser till en Service Bus-kö. Identiteten måste vara medlem i Azure Service Bus Data Sender-rollen . Den måste också vara medlem i rollen Storage Blob Data Contributor på lagringskontot som används för obeställbara bokstäver.

Definiera variabler

Ange först värden för följande variabler som ska användas i CLI-kommandot.

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>" 

Skapa en händelseprenumeration med hjälp av en hanterad identitet för leverans

Det här exempelkommandot skapar en händelseprenumeration för ett anpassat Event Grid-ämne med en slutpunktstyp inställd på Service Bus-kön.

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 

Skapa en händelseprenumeration med hjälp av en hanterad identitet för leverans och obeställbara meddelanden

Det här exempelkommandot skapar en händelseprenumeration för ett anpassat Event Grid-ämne med en slutpunktstyp inställd på Service Bus-kön. Den anger också att den systemhanterade identiteten ska användas för obeställbara bokstäver.

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 

Använda Azure CLI – Event Hubs

I det här avsnittet får du lära dig hur du använder Azure CLI för att aktivera användning av en systemtilldelad identitet för att leverera händelser till en händelsehubb. Identiteten måste vara medlem i rollen Azure Event Hubs Data Sender . Den måste också vara medlem i rollen Storage Blob Data Contributor på lagringskontot som används för obeställbara bokstäver.

Definiera variabler

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>" 

Skapa en händelseprenumeration med hjälp av en hanterad identitet för leverans

Det här exempelkommandot skapar en händelseprenumeration för ett anpassat Event Grid-ämne med en slutpunktstyp inställd på Event Hubs.

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 

Skapa en händelseprenumeration med hjälp av en hanterad identitet för leverans + deadletter

Det här exempelkommandot skapar en händelseprenumeration för ett anpassat Event Grid-ämne med en slutpunktstyp inställd på Event Hubs. Den anger också att den systemhanterade identiteten ska användas för obeställbara bokstäver.

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 

Använda Azure CLI – Azure Storage-kön

I det här avsnittet får du lära dig hur du använder Azure CLI för att aktivera användning av en systemtilldelad identitet för att leverera händelser till en Azure Storage-kö. Identiteten måste vara medlem i rollen Storage Queue Data Message Sender på lagringskontot. Den måste också vara medlem i rollen Storage Blob Data Contributor på lagringskontot som används för obeställbara bokstäver.

Definiera variabler

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>" 

Skapa en händelseprenumeration med hjälp av en hanterad identitet för leverans

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 

Skapa en händelseprenumeration med hjälp av en hanterad identitet för leverans + 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 

Privata slutpunkter

För närvarande går det inte att leverera händelser med hjälp av privata slutpunkter. Det finns alltså inget stöd om du har strikta krav på nätverksisolering där din levererade händelsetrafik inte får lämna det privata IP-utrymmet.

Men om dina krav kräver ett säkert sätt att skicka händelser med hjälp av en krypterad kanal och en känd identitet för avsändaren (i det här fallet Event Grid) med offentligt IP-utrymme, kan du leverera händelser till Event Hubs, Service Bus eller Azure Storage-tjänsten med hjälp av ett anpassat Azure Event Grid-ämne eller en domän med en hanterad identitet enligt den här artikeln. Sedan kan du använda en privat länk som konfigurerats i Azure Functions eller din webhook som distribuerats i ditt virtuella nätverk för att hämta händelser. Se självstudien: Anslut till privata slutpunkter med Azure Functions.

Under den här konfigurationen går trafiken via den offentliga IP-adressen/internet från Event Grid till Event Hubs, Service Bus eller Azure Storage, men kanalen kan krypteras och en hanterad identitet för Event Grid används. Om du konfigurerar din Azure Functions eller webhook som distribuerats till ditt virtuella nätverk för att använda en Händelsehubb, Service Bus eller Azure Storage via privat länk, kommer det avsnittet av trafiken uppenbarligen att finnas kvar i Azure.

Nästa steg

Mer information om hanterade identiteter finns i Vad är hanterade identiteter för Azure-resurser.