Share via


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

Image that depicts secure delivery of events to a webhook that's in the same tenant.

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

In diesem Abschnitt wird gezeigt, wie Sie das Ereignisabonnement mithilfe von Microsoft Entra-Benutzern konfigurieren.

  1. Erstellen Sie eine Microsoft Entra-Anwendung für den Webhook, der für die Zusammenarbeit mit Microsoft Entra (einzelner Mandant) konfiguriert ist.

  2. Öffnen Sie die Azure-Shell im Mandanten, und wählen Sie die PowerShell-Umgebung aus.

  3. Ä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"
    
  4. Ö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.
    
  5. Führen Sie beim Erstellen eines Ereignisabonnements im Portal die folgenden Schritte aus:

    1. Wählen Sie den Endpunkttyp als Webhook aus.

    2. Geben Sie den URI des Endpunkts an.

      Select endpoint type webhook

    3. Wählen Sie oben auf der Seite Ereignisabonnements erstellen die Registerkarte Zusätzliche Features aus.

    4. Führen Sie auf der Registerkarte Zusätzliche Features die folgenden Schritte aus:

      1. Wählen Sie Microsoft Entra-Authentifizierung verwenden aus, und konfigurieren Sie die Mandanten-ID und die Anwendungs-ID:

      2. Kopieren Sie die Microsoft Entra-Mandanten ID aus der Ausgabe des Skripts, und geben Sie sie in das Feld Microsoft Entra-Mandanten ID ein.

      3. 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.

        Secure Webhook action

Konfigurieren des Ereignisabonnements mithilfe einer Microsoft Entra-Anwendung

In diesem Abschnitt wird gezeigt, wie Sie das Ereignisabonnement mit einer Microsoft Entra-Anwendung konfigurieren.

  1. Erstellen Sie eine Microsoft Entra-Anwendung für den Event Grid-Abonnementwriter, der für die Zusammenarbeit mit Microsoft Entra (einzelner Mandant) konfiguriert ist.

  2. Erstellen Sie ein geheimen Schlüssel für die Microsoft Entra-Anwendung, und speichern Sie den Wert (Sie benötigen diesen Wert später).

  3. 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.

  4. Erstellen Sie eine Microsoft Entra-Anwendung für den Webhook, der für die Zusammenarbeit mit Microsoft Entra (einzelner Mandant) konfiguriert ist.

  5. Öffnen Sie die Azure-Shell im Mandanten, und wählen Sie die PowerShell-Umgebung aus.

  6. Ä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"
    
  7. Ö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.

  8. 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]
    
  9. 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.

  10. 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.

Multitenant events with Microsoft Entra ID and Webhooks

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:

  1. 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.

  2. Erstellen Sie ein Geheimnis für die Microsoft Entra-Anwendung, und speichern Sie den Wert (Sie benötigen diesen Wert später).

  3. 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:

  1. Erstellen Sie eine Microsoft Entra-Anwendung für den Webhook, der für die Zusammenarbeit mit Microsoft Entra (einzelner Mandant) konfiguriert ist.

  2. Öffnen Sie die Azure-Shell im Mandanten, und wählen Sie die PowerShell-Umgebung aus.

  3. Ä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"
      
  4. Ö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.
    

Mandant A

Wieder zurück in Mandant A, gehen Sie wie folgt vor:

  1. Ö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]
    
  2. 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.

  3. 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