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

Tento článek popisuje, jak pomocí ID Microsoft Entra zabezpečit připojení mezi vaším odběrem událostí a koncovým bodem webhooku. K demonstraci používá Azure Portal, ale tuto funkci je možné povolit také pomocí rozhraní příkazového řádku, PowerShellu nebo sad SDK.

Důležité

Další kontrola přístupu byla zavedena jako součást vytvoření nebo aktualizace odběru událostí 30. března 2021, aby se vyřešilo ohrožení zabezpečení. 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 následujících nových pokynů překonfigurujte aplikaci Microsoft Entra. Přehled aplikací a instančních objektů 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 znázorňuje, jak se události Event Gridu doručují do webhooku ve stejném tenantovi jako odběr událostí.

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

V této části jsou 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 identifikátory a pak 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 aplikace Microsoft Entra Správa istrator 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 instanční objekt. 30. března 2021 byla zavedena další kontrola přístupu, která řeší ohrožení zabezpečení. 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.

    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. Jako webhook vyberte typ koncového bodu.

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

      Select endpoint type webhook

    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.

        Secure Webhook action

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č odběru Služby Event Grid nakonfigurovaný tak, aby fungoval 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 Gridu a přiřaďte roli Přispěvatel Event Gridu k aplikaci Pro zápis odběru Event Gridu. 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 nakonfigurovanou pro práci s Microsoft Entra (jeden 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 identifikátory a 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 aplikaci Pro zápis odběru služby Event Grid.

    Poznámka:

    Nemusíte upravovat hodnotu $eventGridAppId. V tomto skriptu azureEventGridSecureWebhookSubscriber jako nastavený pro $eventGridRoleName. Nezapomeňte, že pokud chcete tento skript spustit, musíte být členem role aplikace Microsoft Entra Správa istrator 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 bylo všechno správně nakonfigurované, můžete v tématu Event Gridu úspěšně vytvořit odběr webhooku.

    Poznámka:

    V tuto chvíli event Grid předává nosný token Microsoft Entra klientovi webhooku ve všech zprávách. V webhooku budete muset ověřit autorizační token.

Doručování událostí do webhooku v jiném tenantovi 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, musíte použít aplikaci Microsoft Entra ID, jak je znázorněno v této části. V současné době není možné toto připojení zabezpečit pomocí uživatele Microsoft Entra ID na webu Azure Portal.

Multitenant events with Microsoft Entra ID and Webhooks

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

Tenant A

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

  1. Vytvořte aplikaci Microsoft Entra pro zapisovač odběru Event Gridu nakonfigurovanou tak, aby fungovala s jakoukoli aplikací 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) tématu Event Gridu. Přiřaďte roli Přispěvatel Event Gridu k aplikaci Microsoft Entra zapisovače odběru Event Gridu. Tento krok umožňuje aplikaci mít přístup k prostředku Event Gridu při přihlášení k Azure pomocí aplikace Microsoft Entra pomocí Azure CLI.

Tenant B

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

  1. Vytvořte aplikaci Microsoft Entra pro webhook nakonfigurovanou pro práci 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 tenanta Azure pro tenanta 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 identifikátory a pokračujte ve spuštění skriptu.

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

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

        Poznámka:

        Nemusíte upravovat hodnotu $eventGridAppId. V tomto skriptu je pro azureEventGridSecureWebhookSubscriber nastaven .$eventGridRoleName Nezapomeňte, že pokud chcete tento skript spustit, musíte být členem role aplikace Microsoft Entra Správa istrator 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 instanční objekt. 30. března 2021 byla zavedena další kontrola přístupu, která řeší ohrožení zabezpečení. 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.

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

Tenant A

Zpět v tenantovi A proveďte následující kroky:

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

    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áme 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 bylo všechno správně nakonfigurované, můžete v tématu Event Gridu úspěšně vytvořit odběr webhooku.

    Poznámka:

    V tuto chvíli event Grid předává token Microsoft Entra Bearer klientovi webhooku v každé zprávě. V webhooku budete muset ověřit autorizační token.

Další kroky

  • Koncepční informace najdete v tématu Doručování událostí WebHook.
  • Informace o monitorování dodávek událostí najdete v tématu Monitorování doručování zpráv event Gridu.
  • 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.