Doručování událostí do koncových bodů chráněných microsoftem Entra

Tento článek popisuje, jak zabezpečit doručování událostí z Azure Event Gridu (odběry událostí) do koncových bodů webhooku pomocí ověřování Microsoft Entra ID. Dozvíte se, jak nakonfigurovat aplikace Microsoft Entra a přiřadit příslušné role k navázání ověřených připojení mezi Event Gridem a vašimi webhooky. Tento článek používá web Azure Portal k demonstraci. Tuto funkci ale můžete povolit také pomocí rozhraní příkazového řádku, PowerShellu nebo sad SDK.

Důležité

Microsoft zavedl další kontrolu přístupu, která řeší ohrožení zabezpečení při vytváření nebo aktualizaci odběru událostí 30. března 2021. Instanční objekt klienta odběratele musí být vlastníkem nebo musí mít přiřazenou roli pro instanční objekt cílové aplikace. Podle nových pokynů v tomto článku překonfigurujte aplikaci Microsoft Entra. Přehled aplikací a servisních principálů Microsoft Entra najdete v přehledu platformy Microsoft identity platform (v2.0).

Scénáře

Tento článek vysvětluje, jak podrobně implementovat následující dva scénáře:

Doručování událostí do webhooku ve stejném tenantovi Microsoft Entra

Následující diagram ukazuje, jak Event Grid doručuje události do webhooku ve stejném tenantu jako odběr událostí.

Obrázek znázorňující zabezpečené doručování událostí do webhooku, který je ve stejném tenantu

Tato část obsahuje dvě dílčí části. Pročtěte si oba scénáře nebo scénář, který vás zajímá.

Konfigurace odběru událostí pomocí uživatele Microsoft Entra

Tato část ukazuje, jak nakonfigurovat odběr událostí pomocí uživatele Microsoft Entra.

  1. Vytvořte aplikaci Microsoft Entra pro webhook nakonfigurovanou pro práci s Microsoft Entra (jeden tenant).

  2. Otevřete Azure Shell v tenantovi a vyberte prostředí PowerShellu.

  3. Upravte hodnotu $webhookAadTenantId pro připojení k tenantovi.

    • Proměnné:
      • $webhookAadTenantId: ID tenanta Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  4. Otevřete následující skript a aktualizujte hodnoty $webhookAppObjectId a $eventSubscriptionWriterUserPrincipalName s vašimi identifikátory, a poté pokračujte ve spuštění skriptu.

    • Proměnné:
      • $webhookAppObjectId: ID aplikace Microsoft Entra vytvořené pro webhook
      • $eventSubscriptionWriterUserPrincipalName: Hlavní název uživatele Azure, který vytváří odběr událostí

    Poznámka:

    Nemusíte upravovat hodnotu $eventGridAppId. V tomto skriptu je pro $eventGridRoleName nastavena služba AzureEventGridSecureWebhookSubscriber. Nezapomeňte, že pokud chcete tento skript spustit, musíte být členem role Správce aplikace Microsoft Entra nebo vlastníkem instančního objektu aplikace webhooku v Microsoft Entra ID.

    Pokud se zobrazí následující chybová zpráva, musíte zvýšit úroveň na služební principál. 30. března 2021 byla jako součást vytváření nebo aktualizace odběru událostí zavedena další kontrola přístupu k řešení zranitelnosti zabezpečení. Principál služby klienta odběratele musí být buď vlastníkem, nebo mít přiřazenou roli u principála služby cílové aplikace.

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    
  5. Při vytváření odběru událostí na portálu postupujte takto:

    1. Vyberte typ koncového bodu jako webhook.

    2. Zadejte identifikátor URI koncového bodu.

      Snímek obrazovky s výběrem webhooku typu koncového bodu na webu Azure Portal

    3. V horní části stránky Vytvořit odběry událostí vyberte kartu Další funkce.

    4. Na kartě Další funkce proveďte následující kroky:

      1. Vyberte Použít ověřování Microsoft Entra a nakonfigurujte ID tenanta a ID aplikace.

      2. Zkopírujte ID tenanta Microsoft Entra z výstupu skriptu a zadejte ho do pole ID tenanta Microsoft Entra.

      3. Zkopírujte ID aplikace Microsoft Entra z výstupu skriptu a zadejte ho do pole ID aplikace Microsoft Entra. Místo ID aplikace můžete použít identifikátor URI ID aplikace Microsoft Entra. Další informace o identifikátoru URI ID aplikace najdete v tomto článku.

        Snímek obrazovky se zabezpečenou konfigurací akce webhooku na webu Azure Portal

Konfigurace odběru událostí pomocí aplikace Microsoft Entra

Tato část ukazuje, jak nakonfigurovat odběr událostí pomocí aplikace Microsoft Entra.

  1. Vytvořte aplikaci Microsoft Entra pro zapisovač předplatného Event Grid, nakonfigurovanou tak, aby fungovala s Microsoft Entra (jeden tenant).

  2. Vytvořte tajný kód pro aplikaci Microsoft Entra a uložte hodnotu (tuto hodnotu budete potřebovat později).

  3. Přejděte na stránku Řízení přístupu (IAM) tématu Event Grid a přiřaďte roli Přispěvatel Event Grid k aplikaci zapisovatel předplatného Event Grid. Tento krok umožňuje mít přístup k prostředku Event Gridu při přihlášení k Azure pomocí aplikace Microsoft Entra pomocí Azure CLI.

  4. Vytvořte aplikaci Microsoft Entra pro webhook nakonfigurovaný pro práci s Microsoft Entra (jediný tenant).

  5. Otevřete Azure Shell v tenantovi a vyberte prostředí PowerShellu.

  6. Upravte hodnotu $webhookAadTenantId pro připojení k tenantovi.

    • Proměnné:
      • $webhookAadTenantId: ID tenanta Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  7. Otevřete následující skript a aktualizujte hodnoty $webhookAppObjectId a $eventSubscriptionWriterAppId s vašimi identifikátory, poté pokračujte ve spuštění skriptu.

    • Proměnné:
      • $webhookAppObjectId: ID aplikace Microsoft Entra vytvořené pro webhook
      • $eventSubscriptionWriterAppId: ID aplikace Microsoft Entra pro aplikaci pro zápis odběru do Event Grid.

    Poznámka:

    Nemusíte upravovat hodnotu $eventGridAppId. V tomto skriptu AzureEventGridSecureWebhookSubscriber je nastaven pro $eventGridRoleName. Nezapomeňte, že pokud chcete tento skript spustit, musíte být členem role Správce aplikace Microsoft Entra nebo vlastníkem instančního objektu aplikace webhooku v Microsoft Entra ID.

  8. Spuštěním příkazu se přihlaste jako zapisovač odběru služby Event Grid v aplikaci Microsoft Entra.

    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. Vytvořte své předplatné spuštěním příkazu.

    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
    

    Poznámka:

    Tento scénář používá systémové téma. Pokud chcete vytvořit předplatné pro vlastní témata nebo domény pomocí Azure CLI, přečtěte si referenční informace k rozhraní příkazového řádku.

  10. Pokud jste všechno nakonfigurovali správně, můžete vytvořit odběr webhooku v tématu služby Event Grid.

    Poznámka:

    V tuto chvíli Event Grid předává Microsoft Entra bearer token klientovi webhooku ve všech zprávách. Musíte ověřit autorizační token v webhooku.

Odesílání událostí do webhooku v jiném tenantu Microsoft Entra

Pokud chcete zabezpečit propojení mezi vaším odběrem událostí a koncovým bodem webhooku, který je v různých tenantech Microsoft Entra, použijte aplikaci Microsoft Entra ID, jak je znázorněno v této části. V současné době nemůžete toto připojení zabezpečit pomocí uživatele Microsoft Entra ID na webu Azure Portal.

Snímek obrazovky s událostmi s více tenanty, včetně schématu Microsoft Entra ID a webhooků.

Na základě diagramu nakonfigurujte oba tenanty podle dalších kroků.

Nájemník A

V tenantovi A proveďte následující kroky:

  1. Vytvořte aplikaci Microsoft Entra pro zapisovač odběrů pro Event Grid nakonfigurovanou tak, aby fungovala s jakýmkoli prostředím Microsoft Entra (víceklient).

  2. Vytvořte tajný kód pro aplikaci Microsoft Entra a uložte hodnotu (tuto hodnotu budete potřebovat později).

  3. Přejděte na stránku Řízení přístupu (IAM) na stránku Event Grid. Přiřaďte roli Přispěvatel Event Gridu k aplikaci Microsoft Entra zapisovače odběru Event Gridu. Tento krok udělí aplikaci přístup k prostředku Event Gridu při přihlášení k Azure pomocí aplikace Microsoft Entra a Azure CLI.

Nájemce B

V rámci Tenant B proveďte následující kroky:

  1. Vytvořte aplikaci Microsoft Entra pro webhook nakonfigurovanou tak, aby fungovala s Microsoft Entra (jeden tenant).

  2. Otevřete Azure Shell a vyberte prostředí PowerShellu.

  3. Upravte hodnotu $webhookAadTenantId tak, aby se připojila k tenantovi B.

    • Proměnné:

      • $webhookAadTenantId: ID klienta Azure pro klienta B
      $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
      Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
      
  4. Otevřete následující skript a aktualizujte hodnoty $webhookAppObjectId a $eventSubscriptionWriterAppId s vašimi identifikátory. Pak pokračujte spuštěním skriptu.

    • Proměnné:
      • $webhookAppObjectId: ID aplikace Microsoft Entra vytvořené pro webhook

      • $eventSubscriptionWriterAppId: ID aplikace Microsoft Entra pro autora odběru služby Event Grid

        Poznámka:

        Nemusíte upravovat hodnotu $eventGridAppId. V tomto skriptu je nastaven AzureEventGridSecureWebhookSubscriber pro $eventGridRoleName. Nezapomeňte, že pokud chcete tento skript spustit, musíte být členem role Správce aplikace Microsoft Entra nebo vlastníkem instančního objektu aplikace webhooku v Microsoft Entra ID.

    Pokud se zobrazí následující chybová zpráva, musíte zvýšit úroveň na služební principál. 30. března 2021 byla jako součást vytváření nebo aktualizace odběru událostí zavedena další kontrola přístupu k řešení zranitelnosti zabezpečení. Principál služby klienta odběratele musí být buď vlastníkem, nebo mít přiřazenou roli u principála služby cílové aplikace.

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

Nájemník A

V tenantovi A proveďte následující kroky:

  1. Spuštěním příkazu otevřete Azure Shell a přihlaste se jako zapisovač odběru Event Gridu v aplikaci Microsoft Entra.

    az login --service-principal -u [REPLACE_WITH_APP_ID] -p [REPLACE_WITH_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
    
  2. Vytvořte své předplatné spuštěním příkazu.

    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
    

    Poznámka:

    V tomto scénáři používáte téma systému Event Grid. Pokud chcete vytvořit předplatné pro vlastní témata nebo domény Event Gridu pomocí Azure CLI, podívejte se sem.

  3. Pokud jste všechno nakonfigurovali správně, můžete vytvořit odběr webhooku v tématu služby Event Grid.

    Poznámka:

    V tomto okamžiku Event Grid předá token Microsoft Entra Bearer klientovi webhooku v každé zprávě. V webhooku je potřeba ověřit autorizační token.

  • Koncepční informace najdete v tématu Doručování událostí WebHook.
  • Další informace o ověřovacím klíči najdete v tématu Zabezpečení a ověřování služby Event Grid.
  • Další informace o vytvoření odběru služby Azure Event Grid najdete ve schématu odběru služby Event Grid.