Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie die Ereignisübermittlung von Azure Event Grid (Ereignisabonnements) an Ihre Webhook-Endpunkte mithilfe der Microsoft Entra ID-Authentifizierung sichern. Sie erfahren, wie Sie Microsoft Entra-Anwendungen konfigurieren und die entsprechenden Rollen zuweisen, um authentifizierte Verbindungen zwischen Event Grid und Ihren Webhooks einzurichten. Der Artikel verwendet das Azure-Portal zur Demonstration. Sie können das Feature jedoch auch mithilfe von CLI, PowerShell oder SDKs aktivieren.
Wichtig
Um eine Sicherheitslücke zu beheben, hat Microsoft im Rahmen der Erstellung oder Aktualisierung eines Ereignisabonnements am 30. März 2021 eine zusätzliche Zugriffsüberprüfung eingeführt. Der Dienstprinzipal des Abonnentenclients muss entweder Eigentümer sein oder eine Rolle auf dem Dienstprinzipal der Zielanwendung zugewiesen bekommen haben. Konfigurieren Sie Ihre Microsoft Entra-Anwendung neu, indem Sie den neuen Anweisungen in diesem Artikel folgen. Eine Übersicht über Microsoft Entra-Anwendungen und -Dienstprinzipale finden Sie unter Microsoft Identity Platform (v2.0): Übersicht.
Szenarien
In diesem Artikel wird ausführlich erläutert, wie Sie die folgenden beiden Szenarien implementieren:
Ereignisse an einen Webhook übermitteln, der sich im gleichen Microsoft Entra-Mandanten wie das Ereignisabonnement befindet. Sie können entweder einen Microsoft Entra-Benutzer oder eine Microsoft Entra-Anwendung als Ereignisabonnementautor in diesem Szenario verwenden.
Bereitstellung von Ereignissen an einen Webhook, der sich in einem anderen Microsoft Entra-Mandanten als das Ereignisabonnement befindet. Sie können in diesem Szenario nur eine Microsoft Entra-Anwendung als Ereignisabonnement-Verfasser verwenden.
Im ersten Szenario führen Sie alle Schritte oder Skripte in einem einzelnen Mandanten aus, der sowohl das Ereignisabonnement als auch den Webhook enthält. Im zweiten Szenario führen Sie einige Schritte im Mandanten mit dem Ereignisabonnement und einige Schritte im Mandanten mit dem Webhook aus.
Ereignisse an einen Webhook innerhalb desselben Microsoft Entra-Mandanten senden
Das folgende Diagramm zeigt, wie Event Grid Ereignisse an einen Webhook innerhalb desselben Mandanten wie das Ereignisabonnement übermittelt.
Dieser Abschnitt enthält zwei Unterabschnitte. Lesen Sie beide Szenarien oder die Szenarien, die Sie interessiert.
- Konfigurieren des Ereignisabonnements mithilfe eines Microsoft Entra ID-Benutzers
- Konfigurieren des Ereignisabonnements mithilfe einer Microsoft Entra-ID-Anwendung
Konfigurieren des Ereignisabonnements mithilfe eines Microsoft Entra-Benutzers
In diesem Abschnitt wird gezeigt, wie Sie das Ereignisabonnement mithilfe eines Microsoft Entra-Benutzers konfigurieren.
Erstellen Sie eine Microsoft Entra-Anwendung für den Webhook, der für die Zusammenarbeit mit Microsoft Entra (einzelner Mandant) konfiguriert ist.
Öffnen Sie die Azure-Shell im Mandanten, und wählen Sie die PowerShell-Umgebung aus.
Ändern Sie den Wert von $webhookAadTenantId, um eine Verbindung mit dem Mandanten herzustellen.
- Variables:
- $webhookAadTenantId: Azure-Mandanten-ID
$webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]" Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"- Variables:
Öffnen Sie das folgende Skript, aktualisieren Sie die Werte von $webhookAppObjectId und $eventSubscriptionWriterUserPrincipalName mit Ihren Bezeichnern, und fahren Sie dann mit dem Ausführen des Skripts fort.
- Variables:
- $webhookAppObjectId: Für den Webhook erstellte Microsoft Entra-Anwendungs-ID
- $eventSubscriptionWriterUserPrincipalName: Azure-Benutzerprinzipalname des Benutzers, der das Ereignisabonnement erstellt
Hinweis
Sie müssen den Wert von $eventGridAppId nicht ändern. In diesem Skript wird AzureEventGridSecureWebhookSubscriber als $eventGridRoleName festgelegt. Denken Sie daran, dass Sie Mitglied der Rolle Microsoft Entra-Anwendungsadministrator oder Besitzer des Dienstprinzipals der Webhook-App in Microsoft Entra ID sein müssen, um dieses Skript ausführen zu können.
Wenn die folgende Fehlermeldung angezeigt wird, müssen Sie auf den Dienstprinzipal heraufgestuft werden. Am 30. März 2021 wurde eine zusätzliche Zugriffsprüfung für das Erstellen oder Aktualisieren eines Ereignisabonnements eingeführt, um ein Sicherheitsrisiko zu beheben. Der Dienstprinzipal des Abonnentenclients muss entweder ein Besitzer sein oder über eine Rollenzuweisung auf dem Dienstprinzipal der Zielanwendung verfügen.
New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment Code: Authorization_RequestDenied Message: Insufficient privileges to complete the operation.- Variables:
Führen Sie beim Erstellen eines Ereignisabonnements im Portal die folgenden Schritte aus:
Wählen Sie den Endpunkttyp als Webhook aus.
Geben Sie den URI des Endpunkts an.
Wählen Sie oben auf der Seite Ereignisabonnements erstellen die Registerkarte Zusätzliche Features aus.
Führen Sie auf der Registerkarte Zusätzliche Features die folgenden Schritte aus:
Wählen Sie Microsoft Entra-Authentifizierung verwenden aus, und konfigurieren Sie die Mandanten-ID und die Anwendungs-ID:
Kopieren Sie die Microsoft Entra-Mandanten ID aus der Ausgabe des Skripts, und geben Sie sie in das Feld Microsoft Entra-Mandanten ID ein.
Kopieren Sie die Microsoft Entra-Anwendungs ID aus der Ausgabe des Skripts, und geben Sie sie in das Feld Microsoft Entra-Anwendungs ID ein. Sie können die Microsoft Entra-Anwendungskennung-URI anstelle der Anwendungskennung verwenden. Weitere Informationen zum URI der Anwendungs-ID finden Sie in diesem Artikel.
Konfigurieren des Ereignisabonnements mithilfe einer Microsoft Entra-Anwendung
In diesem Abschnitt wird gezeigt, wie Sie das Ereignisabonnement mit einer Microsoft Entra-Anwendung konfigurieren.
Erstellen Sie eine Microsoft Entra-Anwendung für den Event Grid-Abonnementwriter, der für die Zusammenarbeit mit Microsoft Entra (einzelner Mandant) konfiguriert ist.
Erstellen Sie ein geheimen Schlüssel für die Microsoft Entra-Anwendung, und speichern Sie den Wert (Sie benötigen diesen Wert später).
Wechseln Sie zur Seite Zugriffssteuerung (IAM) für das Event Grid-Thema, und weisen Sie der Writer-App für das Event Grid-Abonnement die Rolle Event Grid-Mitwirkender zu. Dieser Schritt ermöglicht Ihnen den Zugriff auf die Event Grid-Ressource, wenn Sie sich mit der Microsoft Entra-Anwendung über die Azure-Befehlszeilenschnittstelle bei Azure angemeldet haben.
Erstellen Sie eine Microsoft Entra-Anwendung für den Webhook, der für die Zusammenarbeit mit Microsoft Entra (einzelner Mandant) konfiguriert ist.
Öffnen Sie die Azure-Shell im Mandanten, und wählen Sie die PowerShell-Umgebung aus.
Ändern Sie den Wert von $webhookAadTenantId, um eine Verbindung mit dem Mandanten herzustellen.
- Variables:
- $webhookAadTenantId: Azure-Mandanten-ID
$webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]" Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"- Variables:
Öffnen Sie das folgende Skript, aktualisieren Sie die Werte von $webhookAppObjectId und $eventSubscriptionWriterAppId mit Ihren Bezeichnern, und fahren Sie dann mit dem Ausführen des Skripts fort.
- Variables:
- $webhookAppObjectId: Für den Webhook erstellte Microsoft Entra-Anwendungs-ID
- $eventSubscriptionWriterAppId: Microsoft Entra-Anwendungs-ID für die Writer-App des Event Grid-Abonnements.
Hinweis
Sie müssen den Wert von
$eventGridAppIdnicht ändern. In diesem Skript entspricht AzureEventGridSecureWebhookSubscriber der Festlegung für den$eventGridRoleName. Denken Sie daran, dass Sie Mitglied der Rolle Microsoft Entra-Anwendungsadministrator oder Besitzer des Dienstprinzipals der Webhook-App in Microsoft Entra ID sein müssen, um dieses Skript ausführen zu können.- Variables:
Melden Sie sich als Microsoft Entra-Anwendung für das Event Grid-Abonnement Autor an, indem Sie den Befehl ausführen.
az login --service-principal -u [REPLACE_WITH_EVENT_GRID_SUBSCRIPTION_WRITER_APP_ID] -p [REPLACE_WITH_EVENT_GRID_SUBSCRIPTION_WRITER_APP_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]Erstellen Sie Ihr Abonnement, indem Sie den Befehl ausführen.
az eventgrid system-topic event-subscription create --name [REPLACE_WITH_SUBSCRIPTION_NAME] -g [REPLACE_WITH_RESOURCE_GROUP] --system-topic-name [REPLACE_WITH_SYSTEM_TOPIC] --endpoint [REPLACE_WITH_WEBHOOK_ENDPOINT] --event-delivery-schema [REPLACE_WITH_WEBHOOK_EVENT_SCHEMA] --azure-active-directory-tenant-id [REPLACE_WITH_TENANT_ID] --azure-active-directory-application-id-or-uri [REPLACE_WITH_APPLICATION_ID_FROM_SCRIPT] --endpoint-type webhookHinweis
In diesem Szenario wird ein Systemthema verwendet. Um ein Abonnement für benutzerdefinierte Themen oder Domänen mithilfe der Azure-Befehlszeilenschnittstelle zu erstellen, sehen Sie sich die Referenz zur Befehlszeilenschnittstelle an.
Wenn Sie alles richtig konfiguriert haben, können Sie das Webhook-Abonnement in Ihrem Event Grid-Thema erstellen.
Hinweis
Nun übergibt Event Grid das Microsoft Entra-Bearer-Token in jeder Nachricht an den Webhook-Client. Sie müssen das Autorisierungstoken in Ihrem Webhook validieren.
Ereignisse an einen Webhook in einem anderen Microsoft Entra-Mandanten senden
Um die Verbindung zwischen Ihrem Ereignisabonnement und Ihrem Webhook-Endpunkt zu sichern, der sich in verschiedenen Microsoft Entra-Mandanten befindet, verwenden Sie eine Microsoft Entra-ID-Anwendung, wie in diesem Abschnitt gezeigt. Derzeit können Sie diese Verbindung nicht mithilfe eines Microsoft Entra ID-Benutzers im Azure-Portal sichern.
Führen Sie basierend auf der Abbildung die nächsten Schritte aus, um beide Mandanten zu konfigurieren.
Mieter A
Führen Sie die folgenden Schritte in Mandant A aus:
Erstellen Sie eine Microsoft Entra-Anwendung für den Event Grid-Abonnementwriter, der für die Zusammenarbeit mit jeder Microsoft Entra-Instanz (mehrinstanzenfähig) konfiguriert ist.
Erstellen Sie ein Geheimnis für die Microsoft Entra-Anwendung, und speichern Sie den Wert (Sie benötigen diesen Wert später).
Wechseln Sie zur Seite "Access Control (IAM)" für das Thema "Event Grid". Weisen Sie der Microsoft Entra-Anwendung des Event Grid-Abonnement-Autors die Rolle "Ereignisraster-Mitwirkender" zu. Dieser Schritt gewährt der Anwendung Zugriff auf die Event Grid-Ressource, wenn Sie sich mit der Microsoft Entra-Anwendung und der Azure CLI bei Azure anmelden.
Mandant B
Führen Sie in Mandant B die folgenden Schritte aus:
Erstellen Sie eine Microsoft Entra-Anwendung für den Webhook, der für die Arbeit mit Microsoft Entra (einzelner Mandant) konfiguriert ist.
Öffnen Sie die Azure-Shell und wählen Sie die PowerShell-Umgebung aus.
Ändern Sie den $webhookAadTenantId Wert, um eine Verbindung mit Mandant B herzustellen.
Variablen:
- $webhookAadTenantId: Azure-Mandanten-ID für Mandanten B
$webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]" Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
Öffnen Sie das folgende Skript, und aktualisieren Sie die Werte von $webhookAppObjectId und $eventSubscriptionWriterAppId mit Ihren Bezeichnern. Führen Sie dann das Skript aus.
- Variables:
$webhookAppObjectId: Für den Webhook erstellte Microsoft Entra-Anwendungs-ID
$eventSubscriptionWriterAppId: Microsoft Entra-Anwendungs-ID für Event Grid-Abonnementverfasser
Hinweis
Sie müssen den Wert von
$eventGridAppIdnicht ändern. In diesem Skript wird AzureEventGridSecureWebhookSubscriber für$eventGridRoleNameeingestellt. Denken Sie daran, dass Sie Mitglied der Rolle Microsoft Entra-Anwendungsadministrator oder Besitzer des Dienstprinzipals der Webhook-App in Microsoft Entra ID sein müssen, um dieses Skript ausführen zu können.
Wenn die folgende Fehlermeldung angezeigt wird, müssen Sie auf den Dienstprinzipal heraufgestuft werden. Am 30. März 2021 wurde eine zusätzliche Zugriffsprüfung für das Erstellen oder Aktualisieren eines Ereignisabonnements eingeführt, um ein Sicherheitsrisiko zu beheben. Der Dienstprinzipal des Abonnentenclients muss entweder ein Besitzer sein oder über eine Rollenzuweisung auf dem Dienstprinzipal der Zielanwendung verfügen.
New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment Code: Authorization_RequestDenied Message: Insufficient privileges to complete the operation.- Variables:
Mieter A
Führen Sie in Mandant A die folgenden Schritte aus:
Öffnen Sie die Azure Shell und melden Sie sich als Event Grid-Abonnement-Autor der Microsoft Entra-Anwendung an, indem Sie den Befehl ausführen.
az login --service-principal -u [REPLACE_WITH_APP_ID] -p [REPLACE_WITH_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]Erstellen Sie Ihr Abonnement, indem Sie den Befehl ausführen.
az eventgrid system-topic event-subscription create --name [REPLACE_WITH_SUBSCRIPTION_NAME] -g [REPLACE_WITH_RESOURCE_GROUP] --system-topic-name [REPLACE_WITH_SYSTEM_TOPIC] --endpoint [REPLACE_WITH_WEBHOOK_ENDPOINT] --event-delivery-schema [REPLACE_WITH_WEBHOOK_EVENT_SCHEMA] --azure-active-directory-tenant-id [REPLACE_WITH_TENANT_B_ID] --azure-active-directory-application-id-or-uri [REPLACE_WITH_APPLICATION_ID_FROM_SCRIPT] --endpoint-type webhookHinweis
In diesem Szenario verwenden Sie ein Event Grid-Systemthema. Informationen zum Erstellen eines Abonnements für benutzerdefinierte Themen oder Event Grid-Domänen mithilfe der Azure CLI finden Sie hier.
Wenn Sie alles richtig konfiguriert haben, können Sie das Webhook-Abonnement in Ihrem Event Grid-Thema erstellen.
Hinweis
Zu diesem Zeitpunkt übergibt Event Grid das Microsoft Entra Bearer-Token in jeder Nachricht an den Webhook-Client. Sie müssen das Autorisierungstoken in Ihrem Webhook validieren.
Zugehöriger Inhalt
- Konzeptionelle Informationen finden Sie unter WebHook-Ereignisbereitstellung.
- Weitere Informationen zum Authentifizierungsschlüssel finden Sie unter Event Grid – Sicherheit und Authentifizierung.
- Weitere Informationen zum Erstellen eines Azure Event Grid-Abonnements finden Sie unter Event Grid-Abonnementschema.