Levering van gebeurtenissen met een beheerde identiteit

In dit artikel wordt beschreven hoe u een beheerde service-identiteit gebruikt voor een Azure Event Grid-systeemonderwerp, aangepast onderwerp of domein. Gebruik deze om gebeurtenissen door te sturen naar ondersteunde bestemmingen, zoals Service Bus-wachtrijen en onderwerpen, Event Hubs en opslagaccounts.

Vereisten

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

    • Zie Beheerde identiteit inschakelen voor aangepaste onderwerpen en domeinen voor aangepaste onderwerpen en domeinen voor aangepaste onderwerpen en domeinen.
    • Zie Beheerde identiteit inschakelen voor systeemonderwerpen
  2. Voeg de identiteit toe aan een juiste rol (bijvoorbeeld Service Bus-gegevenszender) op het doel (bijvoorbeeld een Service Bus-wachtrij). Zie Identiteit toevoegen aan Azure-rollen op bestemmingen voor gedetailleerde stappen

    Notitie

    Op dit moment is het niet mogelijk om gebeurtenissen te leveren met behulp van privé-eindpunten. 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 of -systeemonderwerp of -domein met een beheerde identiteit hebt en de identiteit hebt toegevoegd aan de juiste rol op de bestemming, kunt u abonnementen maken die gebruikmaken van de identiteit.

De Azure-portal gebruiken

Wanneer u een gebeurtenisabonnement maakt, ziet u een optie om het gebruik van een door het systeem toegewezen identiteit of door de gebruiker toegewezen identiteit in te schakelen voor een eindpunt in de sectie ENDPOINT DETAILS .

Hier volgt een voorbeeld van het inschakelen van door het systeem toegewezen identiteit tijdens het maken van een gebeurtenisabonnement met een Service Bus-wachtrij als bestemming.

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

U kunt het gebruik van een door het systeem toegewezen identiteit ook inschakelen om te worden gebruikt voor onbestelbare letters op het tabblad Aanvullende functies .

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

U kunt een beheerde identiteit inschakelen voor een gebeurtenisabonnement nadat het 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.

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

Als u door de gebruiker toegewezen identiteiten voor het onderwerp hebt ingeschakeld, ziet u dat de door de gebruiker toegewezen identiteit is ingeschakeld in de vervolgkeuzelijst voor manged Identity Type. 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.

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

De Azure CLI - Service Bus-wachtrij gebruiken

In deze sectie leert u hoe u de Azure CLI gebruikt om het gebruik van een door het systeem toegewezen identiteit in te schakelen voor het leveren van gebeurtenissen aan een Service Bus-wachtrij. De identiteit moet lid zijn van de rol Azure Service Bus-gegevenszender . Het moet ook lid zijn van de rol Inzender voor opslagblobgegevens in het opslagaccount dat wordt gebruikt voor het schrijven van lege letters.

Variabelen definiëren

Geef eerst waarden op voor de volgende variabelen die moeten worden gebruikt in de CLI-opdracht.

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 voorbeeldopdracht maakt u een gebeurtenisabonnement voor een aangepast Event Grid-onderwerp met een eindpunttype dat 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 maken met behulp van een beheerde identiteit voor levering en onbestelbare brieven

Met deze voorbeeldopdracht maakt u een gebeurtenisabonnement voor een aangepast Event Grid-onderwerp met een eindpunttype dat is ingesteld op de Service Bus-wachtrij. Er wordt ook aangegeven dat de door het systeem beheerde identiteit moet worden gebruikt voor dode letters.

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 

De Azure CLI - Event Hubs gebruiken

In deze sectie leert u hoe u de Azure CLI gebruikt om het gebruik van een door het systeem toegewezen identiteit in te schakelen voor het leveren van gebeurtenissen aan een Event Hub. De identiteit moet lid zijn van de rol Azure Event Hubs-gegevenszender . Het moet ook lid zijn van de rol Inzender voor opslagblobgegevens in het opslagaccount dat wordt gebruikt voor het schrijven van lege letters.

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 $sbq_esname 

Een gebeurtenisabonnement maken met behulp van een beheerde identiteit voor levering + deadletter

Met deze voorbeeldopdracht maakt u een gebeurtenisabonnement voor een aangepast Event Grid-onderwerp met een eindpunttype dat is ingesteld op Event Hubs. Er wordt ook aangegeven dat de door het systeem beheerde identiteit moet worden gebruikt voor dode letters.

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 

De Azure CLI gebruiken - Azure Storage-wachtrij

In deze sectie leert u hoe u de Azure CLI gebruikt om het gebruik van een door het systeem toegewezen identiteit in te schakelen voor het leveren van gebeurtenissen aan een Azure Storage-wachtrij. De identiteit moet lid zijn van de rol Afzender van opslagwachtrijgegevens in het opslagaccount. Het moet ook lid zijn van de rol Inzender voor opslagblobgegevens in het opslagaccount dat wordt gebruikt voor het schrijven van lege letters.

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 maken met behulp van een beheerde identiteit voor levering + 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 

Privé-eindpunten

Op dit moment is het niet mogelijk om gebeurtenissen te leveren met behulp van privé-eindpunten. Dat wil gezegd, er is geen ondersteuning als u strikte netwerkisolatievereisten hebt waarbij het verkeer van uw geleverde gebeurtenissen de privé-IP-ruimte niet mag verlaten.

Als uw vereisten echter vragen om een veilige manier om gebeurtenissen te verzenden met behulp van een versleuteld kanaal en een bekende identiteit van de afzender (in dit geval Event Grid) met behulp van openbare IP-ruimte, kunt u gebeurtenissen leveren aan Event Hubs, Service Bus of Azure Storage-service met behulp van een aangepast onderwerp van Azure Event Grid of een domein met een beheerde identiteit, zoals wordt weergegeven in dit artikel. Vervolgens kunt u een privékoppeling gebruiken die is geconfigureerd in Azure Functions of uw webhook die is geïmplementeerd in uw virtuele netwerk om gebeurtenissen op te halen. Zie de zelfstudie: Verbinding maken naar privé-eindpunten met Azure Functions.

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

Volgende stappen

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