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
Weisen Sie einem Systemthema, einem benutzerdefinierten Thema oder einer Domäne eine systemseitig oder benutzerseitig zugewiesene Identität zu.
- Informationen zu benutzerdefinierten Themen und Domänen finden Sie unter Aktivieren einer verwalteten Identität für benutzerdefinierte Themen und Domänen.
- Informationen zu Systemthemen finden Sie unter Aktivieren einer verwalteten Identität für Systemthemen.
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.
Auf der Registerkarte Zusätzliche Features können Sie auch die Verwendung der vom System zugewiesenen Identität für unzustellbare Nachrichten aktivieren.
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.
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.
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?.