Använda hanterade identiteter för att leverera händelser i Azure Event Grid

Den här artikeln beskriver hur du aktiverar hanterade tjänstidentiteter för Azure Event Grid-systemämnen, anpassade ämnen och domäner. Den förklarar också hur du använder hanterade identiteter för att leverera 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 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ö. För detaljerade steg, se Lägga till identitet i Azure-roller på måldatorer.

    Anmärkning

    För närvarande kan du inte leverera händelser genom att använda privata endpoints. 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 konfigurerat ett anpassat Event Grid-ämne, ett systemämne eller en domän med en hanterad identitet och 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 ser du ett alternativ för att aktivera en systemtilldelad eller användartilldelad identitet för en endpoint i avsnittet ENDPOINT DETAILS .

Det här exemplet visar hur du aktiverar en systemtilldelad identitet när du skapar en händelseprenumeration med en Service Bus-kö som mål.

Skärmdump av aktivering av en systemtilldelad identitet för en Service Bus-köprenumeration.

Du kan också aktivera en systemtilldelad identitet för "dead lettering" på fliken Ytterligare funktioner.

Skärmbild av aktivering av en systemtilldelad identitet för obeställbara bokstäver.

Aktivera en hanterad identitet i 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.

Skärmbild av aktivering av en systemtilldelad identitet i en befintlig händelseprenumeration.

Om du aktiverar 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.

Skärmbild av aktivering av en användartilldelad identitet i en händelseprenumeration.

Använd Azure CLI – Service Bus-kö

I detta avsnitt lär du dig hur du använder Azure CLI för att aktivera en systemtilldelad identitet för att leverera händelser till en Service Bus-kö. Identiteten måste vara medlem i rollen Azure Service Bus Data Sender och rollen Storage Blob Data Contributor på lagringskontot som används för dead-letter-kuvertering.

Definiera variabler

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 kommandot skapar en händelseprenumeration för ett anpassat Event Grid-ämne med slutpunktstypen 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 specificerar också att Event Grid använder den systemtilldelade hanterade identiteten för dödbokstä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_esname

Använda Azure CLI – Event Hubs

I detta avsnitt lär du dig hur man använder Azure CLI för att aktivera 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å det lagringskonto du använder för dead-lettering.

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 $eh_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å Event Hubs. Den specificerar också att den systemtilldelade hanterade identiteten hanterar döda 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 eventhub \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $hubid \
    --deadletter-identity-endpoint $deadletterendpoint \
    --deadletter-identity systemassigned \
    -n $eh_esname

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

I detta avsnitt lär du dig hur du använder Azure CLI för att aktivera 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å det lagringskonto du använder för dead-lettering.

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 och obeställbara meddelanden

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 kan du inte leverera händelser genom att använda privata endpoints. 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.

Om dina krav däremot kräver ett säkert sätt att skicka händelser genom att använda en krypterad kanal och en känd identitet för avsändaren (i detta fall Event Grid) genom att använda publikt IP-utrymme, kan du leverera händelser till Event Hubs, Service Bus eller Azure Storage-tjänst genom att använda ett Azure Event Grid-specialämne eller en domän med en hanterad identitet som visas i denna artikel. Du kan sedan använda en privat länk som konfigurerats i Azure Functions eller en webhook som distribuerats i ditt virtuella nätverk för att hämta händelser. Se handledningen: Anslut till privata slutpunkter med Azure Functions.

Under denna konfiguration går trafiken över den publika IP/internet från Event Grid till Event Hubs, Service Bus eller Azure Storage, men du kan kryptera kanalen och använda en hanterad identitet som Event Grid. Om du konfigurerar Azure Functions eller en webhook som distribuerats till ditt virtuella nätverk för att använda Event Hubs, Service Bus eller Azure Storage via privat länk, stannar den delen av trafiken i Azure.

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