Ereignisübermittlung mit einer verwalteten Identität

In diesem Artikel wird beschrieben, wie Sie eine verwaltete Dienstidentität für ein Azure Event Grid-Systemthema, ein benutzerdefiniertes Thema oder ein benutzerdefiniertes Thema verwenden Standard. Verwenden Sie diese Methode, um Ereignisse an unterstützte Ziele wie Service Bus-Warteschlangen und -Themen, Event Hubs und Speicherkonten weiterzuleiten.

Voraussetzungen

  1. Weisen Sie einem Systemthema, einem benutzerdefinierten Thema oder einer Domäne eine systemseitig oder benutzerseitig zugewiesene Identität zu.

  2. Fügen Sie die Identität einer geeigneten Rolle (z. B. Azure Service Bus-Datensender) für das Ziel (z. B. Service Bus-Warteschlange) zu. Ausführliche Schritte finden Sie unter Hinzufügen einer Identität zu Azure-Rollen für Ziele.

    Hinweis

    Derzeit ist es nicht möglich, Ereignisse über private Endpunkte zu übermitteln. Weitere Informationen finden Sie im Abschnitt Private Endpunkte am Ende dieses Artikels.

Erstellen von Ereignisabonnements, die eine Identität verwenden

Nachdem Sie über ein benutzerdefiniertes Ereignisrasterthema oder ein benutzerdefiniertes Systemthema verfügen oder tun Standard mit einer verwalteten Identität und der entsprechenden Rolle am Ziel die Identität hinzugefügt haben, können Sie Abonnements erstellen, die die Identität verwenden.

Verwenden des Azure-Portals

Wenn Sie ein Ereignisabonnement erstellen, wird im Abschnitt ENDPUNKTDETAILS eine Option angezeigt, mit der die Verwendung der systemseitig oder benutzerseitig zugewiesenen Identität für einen Endpunkt aktiviert werden kann.

Im Folgenden finden Sie ein Beispiel für das Aktivieren der systemseitig zugewiesenen Identität beim Erstellen eines Ereignisabonnements mit einer Service Bus-Warteschlange als Ziel.

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

Auf der Registerkarte Zusätzliche Features können Sie auch die Verwendung der vom System zugewiesenen Identität für unzustellbare Nachrichten aktivieren.

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

Sie können eine verwaltete Identität in einem Ereignisabonnement aktivieren, nachdem sie erstellt wurde. Wechseln Sie auf der Seite Ereignisabonnement für das Ereignisabonnement zur Registerkarte Zusätzliche Features, um die Option anzuzeigen. Sie können die Identität auch für die Inschrift auf dieser Seite aktivieren.

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

Wenn Sie die vom Benutzer zugewiesenen Identitäten für das Thema aktiviert haben, wird in der Dropdownliste für "Manged Identity Type" die Option "Benutzer zugewiesene Identität" aktiviert. Wenn Sie unter Managed Identity Type (Verwalteter Identitätstyp) die Option Vom Benutzer zugewiesen auswählen, können Sie die vom Benutzer zugewiesene Identität auswählen, die Sie zum Übermitteln von Ereignissen verwenden möchten.

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

Verwenden der Azure-Befehlszeilenschnittstelle: Service Bus-Warteschlange

In diesem Abschnitt erfahren Sie, wie Sie die vom System zugewiesene Identität zum Übermitteln von Ereignissen an eine Service Bus-Warteschlange mit der Azure-Befehlszeilenschnittstelle aktivieren. Die Identität muss Mitglied der Rolle Azure Service Bus-Datensender sein. Sie muss auch Mitglied der Rolle Mitwirkender an Storage-Blobdaten für das Speicherkonto sein, das für unzustellbare Nachrichten verwendet wird.

Definieren von Variablen

Geben Sie zunächst Werte für die folgenden Variablen an, die im Befehl für die Befehlszeilenschnittstelle verwendet werden sollen.

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

Erstellen eines Ereignisabonnements mithilfe der verwalteten Identität für die Übermittlung

Dieser Beispielbefehl erstellt ein Ereignisabonnement für ein benutzerdefiniertes Ereignisrasterthema mit einem Endpunkttyp, der auf die ServiceBus-Warteschlange festgelegt ist.

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 

Erstellen eines Ereignisabonnements mithilfe der verwalteten Identität für die Übermittlung und unzustellbare Nachrichten

Dieser Beispielbefehl erstellt ein Ereignisabonnement für ein benutzerdefiniertes Ereignisrasterthema mit einem Endpunkttyp, der auf die ServiceBus-Warteschlange festgelegt ist. Außerdem wird angegeben, dass die vom System verwaltete Identität für unzustellbare Nachrichten verwendet werden soll.

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 

Verwenden der Azure-Befehlszeilenschnittstelle: Event Hubs

In diesem Abschnitt erfahren Sie, wie Sie die vom System zugewiesene Identität zum Übermitteln von Ereignissen an einen Event Hub mit der Azure-Befehlszeilenschnittstelle aktivieren. Die Identität muss Mitglied der Rolle Azure Event Hubs-Datensender sein. Sie muss auch Mitglied der Rolle Mitwirkender an Storage-Blobdaten für das Speicherkonto sein, das für unzustellbare Nachrichten verwendet wird.

Definieren von Variablen

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

Erstellen eines Ereignisabonnements mithilfe der verwalteten Identität für die Übermittlung

Dieser Beispielbefehl erstellt ein Ereignisabonnement für ein benutzerdefiniertes Ereignisrasterthema mit einem Endpunkttyp, der auf Event Hubs festgelegt ist.

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 

Erstellen eines Ereignisabonnements mithilfe der verwalteten Identität für die Übermittlung und unzustellbare Nachrichten

Dieser Beispielbefehl erstellt ein Ereignisabonnement für ein benutzerdefiniertes Ereignisrasterthema mit einem Endpunkttyp, der auf Event Hubs festgelegt ist. Außerdem wird angegeben, dass die vom System verwaltete Identität für unzustellbare Nachrichten verwendet werden soll.

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 

Verwenden der Azure-Befehlszeilenschnittstelle: Azure Storage-Warteschlange

In diesem Abschnitt erfahren Sie, wie Sie die vom System zugewiesene Identität zum Übermitteln von Ereignissen an eine Azure Storage-Warteschlange mit der Azure-Befehlszeilenschnittstelle aktivieren. Die Identität muss Mitglied der Rolle Absender der Speicherwarteschlangen-Datennachricht im Speicherkonto sein. Sie muss auch Mitglied der Rolle Mitwirkender an Storage-Blobdaten für das Speicherkonto sein, das für unzustellbare Nachrichten verwendet wird.

Definieren von Variablen

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

Erstellen eines Ereignisabonnements mithilfe der verwalteten Identität für die Übermittlung

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 

Erstellen eines Ereignisabonnements mithilfe der verwalteten Identität für die Übermittlung und unzustellbare Nachrichten

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 

Private Endpunkte

Derzeit ist es nicht möglich, Ereignisse über private Endpunkte zu übermitteln. Das heißt, es gibt keine Unterstützung, wenn Sie strikte Anforderungen an die Netzwerkisolation haben, bei denen der Datenverkehr der übermittelten Ereignisse den privaten IP-Adressraum nicht verlassen darf.

Wenn Ihre Anforderungen jedoch eine sichere Möglichkeit zum Senden von Ereignissen mithilfe eines verschlüsselten Kanals und einer bekannten Identität des Absenders (in diesem Fall Event Grid) mit öffentlichem IP-Raum aufrufen, können Sie Ereignisse an Event Hubs, Service Bus oder Azure Storage-Dienst mit einem benutzerdefinierten Azure Event Grid-Thema oder einer do Standard mit einer verwalteten Identität bereitstellen, wie in diesem Artikel gezeigt. Anschließend können Sie eine private Verbindung verwenden, die in Azure Functions konfiguriert ist, oder Ihren Webhook, der in Ihrem virtuellen Netzwerk zum Pullen von Ereignissen bereitgestellt wurde. Weitere Informationen finden Sie im Tutorial: Herstellen einer Verbindung mit privaten Endpunkten mit Azure Functions.

Bei dieser Konfiguration wird der Datenverkehr über die öffentliche IP-Adresse bzw. das Internet aus Event Grid an Event Hubs, Service Bus oder Azure Storage übermittelt. Der Kanal kann jedoch verschlüsselt werden, und eine verwaltete Identität von Event Grid wird verwendet. Wenn Sie Ihre Azure Functions-Funktion oder Ihren Webhook, der in Ihrem virtuellen Netzwerk bereitgestellt wurde, für die Verwendung von Event Hubs, Service Bus oder Azure Storage über eine private Verbindung konfigurieren, verbleibt dieser Teil des Datenverkehrs offensichtlich in Azure.

Nächste Schritte

Informationen zu verwalteten Identitäten finden Sie unter Was sind verwaltete Identitäten für Azure-Ressourcen?.