Leverera händelser till Microsoft Entra-skyddade slutpunkter

Den här artikeln beskriver hur du använder Microsoft Entra-ID för att skydda anslutningen mellan din händelseprenumeration och din webhook-slutpunkt. Den använder Azure Portal för demonstration, men funktionen kan också aktiveras med CLI, PowerShell eller SDK:erna.

Viktigt!

Ytterligare åtkomstkontroll har införts som en del av skapande eller uppdatering av händelseprenumeration den 30 mars 2021 för att åtgärda en säkerhetsrisk. Prenumerantklientens tjänsthuvudnamn måste antingen vara ägare eller ha en roll tilldelad målprogrammets huvudnamn. Konfigurera om ditt Microsoft Entra-program enligt de nya anvisningarna nedan. En översikt över Microsoft Entra-program och tjänstens huvudnamn finns i översikten över Microsofts identitetsplattform (v2.0).

Scenarier

I den här artikeln beskrivs hur du implementerar följande två scenarier i detalj:

Leverera händelser till en Webhook i samma Microsoft Entra-klientorganisation

Följande diagram visar hur Event Grid-händelser levereras till en webhook i samma klientorganisation som händelseprenumerationen.

Bild som visar säker leverans av händelser till en webhook som finns i samma klientorganisation.

Det finns två underavsnitt i det här avsnittet. Läs igenom både scenarierna eller de som du är intresserad av.

Konfigurera händelseprenumerationen med hjälp av en Microsoft Entra-användare

Det här avsnittet visar hur du konfigurerar händelseprenumerationen med hjälp av en Microsoft Entra-användare.

  1. Skapa ett Microsoft Entra-program för webhooken som har konfigurerats för att fungera med Microsoft Entra (enskild klientorganisation).

  2. Öppna Azure Shell i klientorganisationen och välj PowerShell-miljön.

  3. Ändra värdet för $webhookAadTenantId för att ansluta till klientorganisationen.

    • Variabler:
      • $webhookAadTenantId: Azure-klientorganisations-ID
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  4. Öppna följande skript och uppdatera värdena för $webhookAppObjectId och $eventSubscriptionWriterUserPrincipalName med dina identifierare och fortsätt sedan att köra skriptet.

    • Variabler:
      • $webhookAppObjectId: Microsoft Entra-program-ID som skapats för webhooken
      • $eventSubscriptionWriterUserPrincipalName: Azure-användarens huvudnamn för den användare som skapar händelseprenumeration

    Kommentar

    Du behöver inte ändra värdet för $eventGridAppId. I det här skriptet anges AzureEventGridSecureWebhookSubscriber för $eventGridRoleName. Kom ihåg att du måste vara medlem i microsoft entra-programadministratörsrollen eller vara ägare till tjänstens huvudnamn för webhook-appen i Microsoft Entra-ID för att kunna köra det här skriptet.

    Om du ser följande felmeddelande måste du höja till tjänstens huvudnamn. En extra åtkomstkontroll har införts som en del av skapande eller uppdatering av händelseprenumeration den 30 mars 2021 för att åtgärda en säkerhetsrisk. Prenumerantklientens tjänsthuvudnamn måste antingen vara ägare eller ha en roll tilldelad målprogrammets huvudnamn.

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    
  5. Följ dessa steg när du skapar en händelseprenumeration i portalen:

    1. Välj slutpunktstypen som Web Hook.

    2. Ange slutpunkts-URI:n.

      Välj webhook för slutpunktstyp

    3. Välj fliken Ytterligare funktioner överstsidan Skapa händelseprenumerationer .

    4. Gör följande på fliken Ytterligare funktioner :

      1. Välj Använd Microsoft Entra-autentisering och konfigurera klientorganisations-ID och program-ID:

      2. Kopiera Microsoft Entra-klient-ID:t från utdata från skriptet och ange det i fältet Klient-ID för Microsoft Entra.

      3. Kopiera Microsoft Entra-program-ID:t från utdata från skriptet och ange det i fältet Microsoft Entra-program-ID . Du kan använda URI för Microsoft Entra-program-ID i stället för att använda program-ID:t. Mer information om program-ID-URI finns i den här artikeln.

        Säker Webhook-åtgärd

Konfigurera händelseprenumerationen med hjälp av ett Microsoft Entra-program

Det här avsnittet visar hur du konfigurerar händelseprenumerationen med hjälp av ett Microsoft Entra-program.

  1. Skapa ett Microsoft Entra-program för Event Grid-prenumerationsskrivaren som har konfigurerats för att fungera med Microsoft Entra (enskild klientorganisation).

  2. Skapa en hemlighet för Microsoft Entra-programmet och spara värdet (du behöver det här värdet senare).

  3. Gå till sidan Åtkomstkontroll (IAM) för event grid-ämnet och tilldela rollen Event Grid-deltagare till skrivarappen för Event Grid-prenumeration. Med det här steget kan du ha åtkomst till Event Grid-resursen när du loggade in i Azure med Microsoft Entra-programmet med hjälp av Azure CLI.

  4. Skapa ett Microsoft Entra-program för webhooken som har konfigurerats för att fungera med Microsoft Entra (enskild klientorganisation).

  5. Öppna Azure Shell i klientorganisationen och välj PowerShell-miljön.

  6. Ändra värdet för $webhookAadTenantId för att ansluta till klientorganisationen.

    • Variabler:
      • $webhookAadTenantId: Azure-klientorganisations-ID
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  7. Öppna följande skript och uppdatera värdena för $webhookAppObjectId och $eventSubscriptionWriterAppId med dina identifierare och fortsätt sedan att köra skriptet.

    • Variabler:
      • $webhookAppObjectId: Microsoft Entra-program-ID som skapats för webhooken
      • $eventSubscriptionWriterAppId: Microsoft Entra-program-ID för Event Grid-prenumerationsskrivare.

    Kommentar

    Du behöver inte ändra värdet $eventGridAppIdför . I det här skriptet har AzureEventGridSecureWebhookSubscriber angetts för $eventGridRoleName. Kom ihåg att du måste vara medlem i microsoft entra-programadministratörsrollen eller vara ägare till tjänstens huvudnamn för webhook-appen i Microsoft Entra-ID för att kunna köra det här skriptet.

  8. Logga in som Event Grid-prenumerationsskrivaren Microsoft Entra Application genom att köra kommandot .

    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. Skapa din prenumeration genom att köra kommandot .

    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
    

    Kommentar

    I det här scenariot används ett systemämne. Om du vill skapa en prenumeration för anpassade ämnen eller domäner med hjälp av Azure CLI kan du läsa CLI-referens.

  10. Om allt har konfigurerats korrekt kan du skapa webhook-prenumerationen i event grid-ämnet.

    Kommentar

    Nu skickar Event Grid nu Microsoft Entra-ägartoken till webhook-klienten i varje meddelande. Du måste verifiera auktoriseringstoken i din webhook.

Leverera händelser till en Webhook i en annan Microsoft Entra-klientorganisation

För att skydda anslutningen mellan din händelseprenumeration och din webhook-slutpunkt som finns i olika Microsoft Entra-klienter måste du använda ett Microsoft Entra-ID-program som du ser i det här avsnittet. För närvarande går det inte att skydda den här anslutningen med hjälp av en Microsoft Entra-ID-användare i Azure Portal.

Multitenanthändelser med Microsoft Entra-ID och Webhooks

Baserat på diagrammet följer du nästa steg för att konfigurera båda klienterna.

Klientorganisation A

Utför följande steg i Klient A:

  1. Skapa ett Microsoft Entra-program för Event Grid-prenumerationsskrivaren som har konfigurerats för att fungera med alla Microsoft Entra (flera klientorganisationer).

  2. Skapa en hemlighet för Microsoft Entra-programmet och spara värdet (du behöver det här värdet senare).

  3. Gå till sidan Åtkomstkontroll (IAM) för event grid-ämnet. Tilldela rollen Event Grid-deltagare till Microsoft Entra-programmet för Event Grid-prenumerationsskrivaren. Det här steget gör att programmet kan ha åtkomst till Event Grid-resursen när du loggar in i Azure med Microsoft Entra-programmet med hjälp av Azure CLI.

Klient B

Utför följande steg i Klient B:

  1. Skapa ett Microsoft Entra-program för webhooken som har konfigurerats för att fungera med Microsoft Entra (enskild klientorganisation).

  2. Öppna Azure Shell och välj PowerShell-miljön.

  3. Ändra värdet för $webhookAadTenantId för att ansluta till klientorganisation B.

    • Variabler:

      • $webhookAadTenantId: Azure-klientorganisations-ID för klientorganisation B
      $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
      Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
      
  4. Öppna följande skript och uppdatera värdena för $webhookAppObjectId och $eventSubscriptionWriterAppId med dina identifierare och fortsätt sedan att köra skriptet.

    • Variabler:
      • $webhookAppObjectId: Microsoft Entra-program-ID som skapats för webhooken

      • $eventSubscriptionWriterAppId: Microsoft Entra-program-ID för Event Grid-prenumerationsskrivare

        Kommentar

        Du behöver inte ändra värdet $eventGridAppIdför . I det här skriptet har AzureEventGridSecureWebhookSubscriber angetts för $eventGridRoleName. Kom ihåg att du måste vara medlem i microsoft entra-programadministratörsrollen eller vara ägare till tjänstens huvudnamn för webhook-appen i Microsoft Entra-ID för att kunna köra det här skriptet.

    Om du ser följande felmeddelande måste du höja till tjänstens huvudnamn. En extra åtkomstkontroll har införts som en del av skapande eller uppdatering av händelseprenumeration den 30 mars 2021 för att åtgärda en säkerhetsrisk. Prenumerantklientens tjänsthuvudnamn måste antingen vara ägare eller ha en roll tilldelad målprogrammets huvudnamn.

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    

Klientorganisation A

Gör följande i Klient A:

  1. Öppna Azure Shell och logga in som Event Grid-prenumerationsskrivaren Microsoft Entra Application genom att köra kommandot .

    az login --service-principal -u [REPLACE_WITH_APP_ID] -p [REPLACE_WITH_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
    
  2. Skapa din prenumeration genom att köra kommandot .

    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
    

    Kommentar

    I det här scenariot använder vi ett Event Grid-systemämne. Se här om du vill skapa en prenumeration för anpassade ämnen eller Event Grid-domäner med hjälp av Azure CLI.

  3. Om allt har konfigurerats korrekt kan du skapa webhook-prenumerationen i event grid-ämnet.

    Kommentar

    Nu skickar Event Grid Microsoft Entra Bearer-token till webhook-klienten i varje meddelande. Du måste verifiera auktoriseringstoken i din webhook.

Nästa steg