Beheerde identiteiten gebruiken om gebeurtenissen te leveren in Azure Event Grid

In dit artikel wordt uitgelegd hoe u beheerde service-identiteiten inschakelt voor azure Event Grid-systeemonderwerpen, aangepaste onderwerpen en domeinen. Ook wordt uitgelegd hoe u beheerde identiteiten gebruikt om gebeurtenissen te leveren aan ondersteunde bestemmingen, zoals Service Bus-wachtrijen en onderwerpen, Event Hubs en opslagaccounts.

Vereiste voorwaarden

  1. Wijs een door het systeem toegewezen identiteit of door de gebruiker toegewezen identiteit toe aan een systeemonderwerp, aangepast onderwerp of domein.

  2. Voeg de identiteit toe aan een geschikte rol, zoals Service Bus Data Zender, op de bestemming, zoals een Service Bus-wachtrij. Zie Identiteit toevoegen aan Azure-rollen op bestemmingen voor gedetailleerde stappen.

    Opmerking

    Momenteel kun je geen events leveren via private endpoints. Zie de sectie Privé-eindpunten aan het einde van dit artikel voor meer informatie.

Gebeurtenisabonnementen maken die gebruikmaken van een identiteit

Nadat u een aangepast Event Grid-onderwerp, systeemonderwerp of domein met een beheerde identiteit hebt ingesteld en de identiteit hebt toegevoegd aan de juiste rol op de bestemming, bent u klaar om abonnementen te maken die gebruikmaken van de identiteit.

De Azure-portal gebruiken

Wanneer je een event-abonnement aanmaakt, zie je een optie om een systeem- of door de gebruiker toegewezen identiteit voor een endpoint in te schakelen in de sectie ENDPOINT DETAILS .

In dit voorbeeld ziet u hoe u een door het systeem toegewezen identiteit inschakelt tijdens het maken van een gebeurtenisabonnement met een Service Bus-wachtrij als bestemming.

Screenshot van het inschakelen van een systeem-toegewezen identiteit voor een Service Bus queue-abonnement.

U kunt ook een door het systeem toegewezen identiteit inschakelen voor dode letters op het tabblad Aanvullende functies .

Schermopname van het inschakelen van een door het systeem toegewezen identiteit voor dead-lettering.

Schakel een beheerde identiteit in voor een gebeurtenisabonnement nadat deze is gemaakt. Schakel op de pagina Gebeurtenisabonnement voor het gebeurtenisabonnement over naar het tabblad Aanvullende functies om de optie weer te geven. U kunt ook identiteit inschakelen voor onbestelbare brieven op deze pagina.

Schermopname van het inschakelen van een door het systeem toegewezen identiteit voor een bestaand gebeurtenisabonnement.

Als u door de gebruiker toegewezen identiteiten inschakelt voor het onderwerp, ziet u dat de door de gebruiker toegewezen identiteit is ingeschakeld in de vervolgkeuzelijst voor het type beheerde identiteit. Als u Door de gebruiker toegewezen voor het type beheerde identiteit selecteert, kunt u vervolgens de door de gebruiker toegewezen identiteit selecteren die u wilt gebruiken om gebeurtenissen te leveren.

Schermopname van het inschakelen van een door de gebruiker toegewezen identiteit voor een gebeurtenisabonnement.

Gebruik de Azure CLI - Service Bus queue

In deze sectie leer je hoe je de Azure CLI gebruikt om een door het systeem toegewezen identiteit in staat te stellen gebeurtenissen aan een Service Bus-wachtrij te leveren. De identiteit moet lid zijn van de rol Azure Service Bus-gegevensverzender en de rol Opslag Blob-gegevensbijdrager op het opslagaccount dat wordt gebruikt voor dead-lettering.

Variabelen definiëren

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

Een gebeurtenisabonnement maken met behulp van een beheerde identiteit voor levering

Met deze opdracht maakt u een gebeurtenisabonnement voor een aangepast Event Grid-onderwerp waarbij het eindpunttype is ingesteld op De Service Bus-wachtrij.

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

Een gebeurtenisabonnement aanmaken met behulp van een beheerde identiteit voor levering en afwijsberichten

Met deze voorbeeldopdracht maakt u een gebeurtenisabonnement voor een aangepast Event Grid-onderwerp met een eindpunttype dat is ingesteld op de Service Bus-wachtrij. Het specificeert ook dat Event Grid de door het systeem toegewezen beheerde identiteit gebruikt voor dead-lettering.

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

De Azure CLI - Event Hubs gebruiken

In deze sectie leer je hoe je de Azure CLI gebruikt om een systeem-toegewezen identiteit gebeurtenissen te laten leveren aan een event hub. De identiteit moet lid zijn van de Azure Event Hubs Data Sender-rol. Het moet ook beschikken over de rol Storage Blob Data Contributor voor het opslagaccount dat u gebruikt voor dead-lettering.

Variabelen definiëren

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

Een gebeurtenisabonnement maken met behulp van een beheerde identiteit voor levering

Met deze voorbeeldopdracht maakt u een gebeurtenisabonnement voor een aangepast Event Grid-onderwerp met een eindpunttype dat is ingesteld op 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

Een gebeurtenisabonnement aanmaken met behulp van een beheerde identiteit voor levering en afwijsberichten

Met deze voorbeeldopdracht maakt u een gebeurtenisabonnement voor een aangepast Event Grid-onderwerp met een eindpunttype dat is ingesteld op Event Hubs. Ook wordt gespecificeerd dat de door het systeem toegewezen beheerde identiteit dead-lettering afhandelt.

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

De Azure CLI gebruiken - Azure Storage-wachtrij

In deze sectie leer je hoe je de Azure CLI gebruikt om een systeem-toegewezen identiteit in te schakelen die gebeurtenissen naar een Azure Storage-wachtrij kan leveren. De identiteit moet lid zijn van de rol Opslagwachtrijgegevensberichtverzender op het opslagaccount. Het moet ook beschikken over de rol Storage Blob Data Contributor voor het opslagaccount dat u gebruikt voor dead-lettering.

Variabelen definiëren

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

Een gebeurtenisabonnement maken met behulp van een beheerde identiteit voor levering

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

Een gebeurtenisabonnement aanmaken met behulp van een beheerde identiteit voor levering en afwijsberichten

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

Privé-eindpunten

Momenteel kun je geen events leveren via private endpoints. Dat wil zeggen, er is geen ondersteuning als u strikte netwerkisolatievereisten hebt waarbij het verkeer van uw afgeleverde evenementen het private IP-adresbereik niet mag verlaten.

Als je echter een veilige manier vereisen om events te verzenden via een versleuteld kanaal en een bekende identiteit van de zender (in dit geval Event Grid) via publieke IP-ruimte, kun je events leveren aan Event Hubs, Service Bus of Azure Storage service via een Azure Event Grid custom topic of een domein met een managed identity, zoals in dit artikel wordt getoond. U kunt vervolgens een privékoppeling gebruiken die is geconfigureerd in Azure Functions of een webhook die is geïmplementeerd in uw virtuele netwerk om gebeurtenissen op te halen. Zie de zelfstudie: Verbinding maken met privé-eindpunten met Azure Functions.

Onder deze configuratie gaat het verkeer via het publieke IP/internet van Event Grid naar Event Hubs, Service Bus of Azure Storage, maar je kunt het kanaal versleutelen en een beheerde identiteit van Event Grid gebruiken. Als u Azure Functions of een webhook configureert die is geïmplementeerd in uw virtuele netwerk om Event Hubs, Service Bus of Azure Storage te gebruiken via een privékoppeling, blijft die sectie van het verkeer binnen Azure.

Zie wat beheerde identiteiten zijn voor Azure-resources voor meer informatie over beheerde identiteiten.