Bereitstellen von Ereignissen an von Microsoft Entra geschützte Endpunkte
Dieser Artikel beschreibt, wie Sie Microsoft Entra ID verwenden, um die Verbindung zwischen Ihrem Ereignisabonnement und Ihrem Webhook-Endpunkt sichern. Zu Demonstrationszwecken wird das Azure-Portal verwendet. Die Funktion kann jedoch auch über mit der Befehlszeilenschnittstelle, mit PowerShell oder mit den SDKs aktiviert werden.
Wichtig
Im Rahmen der Erstellung oder Aktualisierung des Ereignisabonnements am 30. März 2021 wurde eine zusätzliche Zugriffsüberprüfung eingeführt, um ein Sicherheitsrisiko zu entschärfen. Der Dienstprinzipal des Abonnentenclients muss entweder ein Besitzer sein oder über eine Rollenzuweisung auf dem Dienstprinzipal der Zielanwendung verfügen. Konfigurieren Sie Ihre Microsoft Entra ID-Anwendung nach den folgenden neuen Anweisungen neu. Eine Übersicht über Microsoft Entra ID-Anwendungen und Dienstprinzipale finden Sie unter Übersicht über Microsoft Identity Platform (v2.0).
Szenarien
In diesem Artikel wird ausführlich erläutert, wie Sie die folgenden beiden Szenarien implementieren:
Bereitstellen von Ereignissen für einen Webhook, 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.
Bereitstellen von Ereignissen für einen Webhook in einem anderen Microsoft Entra-Mandanten als das Ereignisabonnement. Sie können in diesem Szenario nur Microsoft Entra-Anwendungen als Ereignisabonnementwriter verwenden.
Im ersten Szenario führen Sie alle Schritte oder Skripts 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.
Bereitstellen von Ereignissen an einen Webhook im selben Microsoft Entra-Mandanten
Das folgende Diagramm zeigt, wie Event Grid-Ereignisse an einen Webhook im gleichen Mandanten wie das Ereignisabonnement übermittelt werden.
Dieser Abschnitt umfasst zwei Unterabschnitte. Sie können beide Szenarien oder nur das Szenario lesen, an dem Sie interessiert sind.
- 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 von Microsoft Entra-Benutzern 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 als Teil des Erstellens oder Aktualisierens eines Ereignisabonnements eingeführt, um eine Sicherheitslücke zu schließen. 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 den Microsoft Entra-Anwendungs ID-URI anstelle der Anwendungs ID 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
$eventGridAppId
nicht ä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 die Microsoft Entra-Anwendung für den Event Grid-Abonnementschreiber 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 webhook
Hinweis
In diesem Szenario wird ein Systemthema verwendet. Weitere Informationen finden zum Erstellen eines Abonnements für benutzerdefinierte Themen oder Domänen mithilfe der Azure-Befehlszeilenschnittstelle finden Sie in der Referenz zur Befehlszeilenschnittstelle.
Wenn alles ordnungsgemäß konfiguriert wurde, können Sie das Webhookabonnement in Ihrem Event Grid-Thema erfolgreich erstellen.
Hinweis
An diesem Punkt übergibt Event Grid nun das Microsoft Entra-Bearertoken in jeder Nachricht an den Webhookclient. Sie müssen das Autorisierungstoken in Ihrem Webhook überprüfen.
Bereitstellen von Ereignissen an einen Webhook in einem anderen Microsoft Entra-Mandanten
Zum Schützen der Verbindung zwischen Ihrem Ereignisabonnement und Ihrem Webhookendpunkt, die sich in verschiedenen Microsoft Entra-Mandanten befinden, müssen Sie eine Microsoft Entra-Anwendung verwenden, wie in diesem Abschnitt gezeigt. Derzeit ist es nicht möglich, diese Verbindung mithilfe von Microsoft Entra ID-Benutzern im Azure-Portal zu schützen.
Führen Sie basierend auf der Abbildung die nächsten Schritte aus, um beide Mandanten zu konfigurieren.
Mandant A
Gehen Sie in Mandant Awie folgt vor:
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).
Navigieren Sie zur Seite Zugriffssteuerung (IAM) für das Event Grid-Thema. Weisen Sie der Microsoft Entra-Anwendung des Event Grid-Abonnementwriters die Rolle Event Grid-Mitwirkender zu. Dieser Schritt ermöglicht der Anwendung den Zugriff auf die Event Grid-Ressource, wenn Sie sich mit der Microsoft Entra-Anwendung über die Azure-Befehlszeilenschnittstelle bei Azure anmelden.
Mandant B
Gehen Sie in Mandant Bwie folgt vor:
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 Mandant B herzustellen.
Variables:
- $webhookAadTenantId: Azure-Mandanten-ID für Mandant B
$webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]" Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
Ö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 Event Grid-Abonnementwriter
Hinweis
Sie müssen den Wert von
$eventGridAppId
nicht ä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.
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 als Teil des Erstellens oder Aktualisierens eines Ereignisabonnements eingeführt, um eine Sicherheitslücke zu schließen. 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:
Mandant A
Wieder zurück in Mandant A, gehen Sie wie folgt vor:
Öffnen Sie die Azure-Shell, und melden Sie sich als die Microsoft Entra-Anwendung für den Event Grid-Abonnementwriter 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 webhook
Hinweis
In diesem Szenario verwenden wir ein Event Grid-Systemthema. Weitere Informationen finden Sie hier, wenn Sie ein Abonnement für benutzerdefinierte Themen oder Event Grid-Domänen mithilfe der Azure CLI erstellen möchten.
Wenn alles ordnungsgemäß konfiguriert wurde, können Sie das Webhookabonnement in Ihrem Event Grid-Thema erfolgreich erstellen.
Hinweis
An diesem Punkt übergibt Event Grid nun das Microsoft Entra-Bearertoken in jeder Nachricht an den Webhookclient. Sie müssen den Autorisierungstoken in Ihrem Webhook überprüfen.
Nächste Schritte
- Konzeptionelle Informationen finden Sie unter WebHook-Ereignisbereitstellung.
- Informationen zur Überwachung von Ereignisübermittlungen finden Sie unter Überwachen der Event Grid-Nachrichtenübermittlung.
- 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.