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 som finns i samma Microsoft Entra-klientorganisation som händelseprenumerationen. Du kan använda antingen en Microsoft Entra-användare eller ett Microsoft Entra-program som händelseprenumerationsskrivare i det här scenariot.
Leverera händelser till en webhook som finns i en annan Microsoft Entra-klient från händelseprenumerationen. Du kan bara använda ett Microsoft Entra-program som händelseprenumerationsskrivare i det här scenariot.
I det första scenariot kör du alla steg eller skript i en enda klientorganisation som har både händelseprenumerationen och webhooken. Och i det andra scenariot kör du några steg i klientorganisationen som har händelseprenumerationen och några steg i klientorganisationen som har webhooken.
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.
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-ID-användare
- Konfigurera händelseprenumerationen med hjälp av ett Microsoft Entra-ID-program
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.
Skapa ett Microsoft Entra-program för webhooken som har konfigurerats för att fungera med Microsoft Entra (enskild klientorganisation).
Öppna Azure Shell i klientorganisationen och välj PowerShell-miljön.
Ä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"
- Variabler:
Ö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.
- Variabler:
Följ dessa steg när du skapar en händelseprenumeration i portalen:
Välj slutpunktstypen som Web Hook.
Ange slutpunkts-URI:n.
Välj fliken Ytterligare funktioner överst på sidan Skapa händelseprenumerationer .
Gör följande på fliken Ytterligare funktioner :
Välj Använd Microsoft Entra-autentisering och konfigurera klientorganisations-ID och program-ID:
Kopiera Microsoft Entra-klient-ID:t från utdata från skriptet och ange det i fältet Klient-ID för Microsoft Entra.
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.
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.
Skapa ett Microsoft Entra-program för Event Grid-prenumerationsskrivaren som har konfigurerats för att fungera med Microsoft Entra (enskild klientorganisation).
Skapa en hemlighet för Microsoft Entra-programmet och spara värdet (du behöver det här värdet senare).
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.
Skapa ett Microsoft Entra-program för webhooken som har konfigurerats för att fungera med Microsoft Entra (enskild klientorganisation).
Öppna Azure Shell i klientorganisationen och välj PowerShell-miljön.
Ä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"
- Variabler:
Ö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
$eventGridAppId
fö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.- Variabler:
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]
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
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.
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:
Skapa ett Microsoft Entra-program för Event Grid-prenumerationsskrivaren som har konfigurerats för att fungera med alla Microsoft Entra (flera klientorganisationer).
Skapa en hemlighet för Microsoft Entra-programmet och spara värdet (du behöver det här värdet senare).
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:
Skapa ett Microsoft Entra-program för webhooken som har konfigurerats för att fungera med Microsoft Entra (enskild klientorganisation).
Öppna Azure Shell och välj PowerShell-miljön.
Ä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"
Ö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
$eventGridAppId
fö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.
- Variabler:
Klientorganisation A
Gör följande i Klient A:
Ö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]
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.
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
- Konceptuell information finns i WebHook händelseleverans.
- Information om övervakning av händelseleveranser finns i Övervaka Event Grid-meddelandeleverans.
- Mer information om autentiseringsnyckeln finns i Säkerhet och autentisering i Event Grid.
- Mer information om hur du skapar en Azure Event Grid-prenumeration finns i Event Grid-prenumerationsschema.