Udostępnij za pośrednictwem


Dostarczanie zdarzeń do chronionych punktów końcowych firmy Microsoft

W tym artykule opisano sposób zabezpieczania połączenia między subskrypcją zdarzeń a punktem końcowym elementu webhook przy użyciu identyfikatora Entra firmy Microsoft. Używa witryny Azure Portal do celów demonstracyjnych, jednak można ją również włączyć przy użyciu interfejsu wiersza polecenia, programu PowerShell lub zestawów SDK.

Ważne

Dodatkowa kontrola dostępu została wprowadzona w ramach tworzenia lub aktualizowania subskrypcji zdarzeń 30 marca 2021 r. w celu rozwiązania luki w zabezpieczeniach. Jednostka usługi klienta subskrybenta musi być właścicielem lub mieć przypisaną rolę w docelowej jednostce usługi aplikacji. Skonfiguruj ponownie aplikację Microsoft Entra, postępując zgodnie z poniższymi nowymi instrukcjami. Aby zapoznać się z omówieniem aplikacji i jednostek usługi firmy Microsoft, zobacz omówienie Platforma tożsamości Microsoft (wersja 2.0).

Scenariusze

W tym artykule wyjaśniono, jak szczegółowo zaimplementować następujące dwa scenariusze:

Dostarczanie zdarzeń do elementu webhook w tej samej dzierżawie usługi Microsoft Entra

Na poniższym diagramie przedstawiono sposób dostarczania zdarzeń usługi Event Grid do elementu webhook w tej samej dzierżawie co subskrypcja zdarzeń.

Obraz przedstawiający bezpieczne dostarczanie zdarzeń do elementu webhook, który znajduje się w tej samej dzierżawie.

W tej sekcji znajdują się dwie podsekcje. Zapoznaj się zarówno ze scenariuszami, jak i z interesującymi Cię scenariuszami.

Konfigurowanie subskrypcji zdarzeń przy użyciu użytkownika Entra firmy Microsoft

W tej sekcji pokazano, jak skonfigurować subskrypcję zdarzeń przy użyciu użytkownika Firmy Microsoft Entra.

  1. Utwórz aplikację Firmy Microsoft Entra dla elementu webhook skonfigurowanego do pracy z firmą Microsoft Entra (pojedyncza dzierżawa).

  2. Otwórz usługę Azure Shell w dzierżawie i wybierz środowisko programu PowerShell.

  3. Zmodyfikuj wartość $webhookAadTenantId , aby nawiązać połączenie z dzierżawą.

    • Zmiennych:
      • $webhookAadTenantId: identyfikator dzierżawy platformy Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  4. Otwórz poniższy skrypt i zaktualizuj wartości $webhookAppObjectId i $eventSubscriptionWriterUserPrincipalName przy użyciu identyfikatorów, a następnie kontynuuj uruchamianie skryptu.

    • Zmiennych:
      • $webhookAppObjectId: identyfikator aplikacji Entra firmy Microsoft utworzony dla elementu webhook
      • $eventSubscriptionWriterUserPrincipalName: główna nazwa użytkownika platformy Azure, który tworzy subskrypcję zdarzeń

    Uwaga

    Nie musisz modyfikować wartości $eventGridAppId. W tym skrypcie dla $eventGridRoleName jest ustawiona wartość AzureEventGridSecureWebhookSubscriber. Pamiętaj, że aby wykonać ten skrypt, musisz być członkiem roli Administratora aplikacji Entra firmy Microsoft lub być właścicielem jednostki usługi aplikacji elementu webhook w usłudze Microsoft Entra ID.

    Jeśli zostanie wyświetlony następujący komunikat o błędzie, musisz podnieść poziom uprawnień do jednostki usługi. Dodatkowa kontrola dostępu została wprowadzona w ramach tworzenia lub aktualizowania subskrypcji zdarzeń 30 marca 2021 r. w celu rozwiązania luki w zabezpieczeniach. Jednostka usługi klienta subskrybenta musi być właścicielem lub mieć przypisaną rolę w docelowej jednostce usługi aplikacji.

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    
  5. W portalu podczas tworzenia subskrypcji zdarzeń wykonaj następujące kroki:

    1. Wybierz typ punktu końcowego jako Web Hook.

    2. Określ identyfikator URI punktu końcowego.

      Wybieranie elementu webhook typu punktu końcowego

    3. Wybierz kartę Dodatkowe funkcje w górnej części strony Tworzenie subskrypcji zdarzeń.

    4. Na karcie Dodatkowe funkcje wykonaj następujące czynności:

      1. Wybierz pozycję Użyj uwierzytelniania entra firmy Microsoft i skonfiguruj identyfikator dzierżawy i identyfikator aplikacji:

      2. Skopiuj identyfikator dzierżawy Entra firmy Microsoft z danych wyjściowych skryptu i wprowadź go w polu Identyfikator dzierżawy firmy Microsoft Entra.

      3. Skopiuj identyfikator aplikacji Microsoft Entra z danych wyjściowych skryptu i wprowadź go w polu Identyfikator aplikacji Entra firmy Microsoft. Możesz użyć identyfikatora URI identyfikatora aplikacji Entra firmy Microsoft zamiast identyfikatora aplikacji. Aby uzyskać więcej informacji na temat identyfikatora URI identyfikatora aplikacji, zobacz ten artykuł.

        Akcja bezpiecznego elementu webhook

Konfigurowanie subskrypcji zdarzeń przy użyciu aplikacji Microsoft Entra

W tej sekcji pokazano, jak skonfigurować subskrypcję zdarzeń przy użyciu aplikacji Microsoft Entra.

  1. Utwórz aplikację Firmy Microsoft Entra dla składnika zapisywania subskrypcji usługi Event Grid skonfigurowanego do pracy z firmą Microsoft Entra (pojedyncza dzierżawa).

  2. Utwórz wpis tajny dla aplikacji Microsoft Entra i zapisz wartość (ta wartość będzie potrzebna później).

  3. Przejdź do strony Kontrola dostępu (IAM) dla tematu usługi Event Grid i przypisz rolę Współautor usługi Event Grid do aplikacji zapisywania subskrypcji usługi Event Grid. Ten krok umożliwia dostęp do zasobu usługi Event Grid po zalogowaniu się na platformie Azure przy użyciu aplikacji Microsoft Entra przy użyciu interfejsu wiersza polecenia platformy Azure.

  4. Utwórz aplikację Microsoft Entra dla elementu webhook skonfigurowanego do pracy z firmą Microsoft Entra (pojedyncza dzierżawa).

  5. Otwórz usługę Azure Shell w dzierżawie i wybierz środowisko programu PowerShell.

  6. Zmodyfikuj wartość $webhookAadTenantId , aby nawiązać połączenie z dzierżawą.

    • Zmiennych:
      • $webhookAadTenantId: identyfikator dzierżawy platformy Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  7. Otwórz następujący skrypt i zaktualizuj wartości $webhookAppObjectId i $eventSubscriptionWriterAppId przy użyciu identyfikatorów, a następnie kontynuuj uruchamianie skryptu.

    • Zmiennych:
      • $webhookAppObjectId: identyfikator aplikacji Entra firmy Microsoft utworzony dla elementu webhook
      • $eventSubscriptionWriterAppId: identyfikator aplikacji Entra firmy Microsoft dla aplikacji składnika zapisywania subskrypcji usługi Event Grid.

    Uwaga

    Nie trzeba modyfikować wartości .$eventGridAppId W tym skrypcie azureEventGridSecureWebhookSubscriber ustawiono dla elementu $eventGridRoleName. Pamiętaj, że aby wykonać ten skrypt, musisz być członkiem roli Administratora aplikacji Entra firmy Microsoft lub być właścicielem jednostki usługi aplikacji elementu webhook w usłudze Microsoft Entra ID.

  8. Zaloguj się jako składnik zapisywania subskrypcji usługi Event Grid Microsoft Entra Application, uruchamiając polecenie .

    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. Utwórz subskrypcję, uruchamiając polecenie .

    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
    

    Uwaga

    W tym scenariuszu jest używany temat systemowy. Jeśli chcesz utworzyć subskrypcję dla tematów niestandardowych lub domen przy użyciu interfejsu wiersza polecenia platformy Azure, zobacz Dokumentacja interfejsu wiersza polecenia.

  10. Jeśli wszystko zostało poprawnie skonfigurowane, możesz pomyślnie utworzyć subskrypcję elementu webhook w temacie usługi Event Grid.

    Uwaga

    W tym momencie usługa Event Grid przekazuje token elementu nośnego Firmy Microsoft do klienta elementu webhook w każdym komunikacie. Należy zweryfikować token autoryzacji w elemecie webhook.

Dostarczanie zdarzeń do elementu webhook w innej dzierżawie usługi Microsoft Entra

Aby zabezpieczyć połączenie między subskrypcją zdarzeń a punktem końcowym elementu webhook, które znajdują się w różnych dzierżawach firmy Microsoft Entra, należy użyć aplikacji Microsoft Entra ID, jak pokazano w tej sekcji. Obecnie nie można zabezpieczyć tego połączenia przy użyciu użytkownika Microsoft Entra ID w witrynie Azure Portal.

Zdarzenia wielodostępne z identyfikatorami Entra firmy Microsoft i elementami webhook

Na podstawie diagramu wykonaj następne kroki, aby skonfigurować obie dzierżawy.

Dzierżawa A

Wykonaj następujące czynności w dzierżawie A:

  1. Utwórz aplikację Firmy Microsoft Entra dla składnika zapisywania subskrypcji usługi Event Grid skonfigurowanego do pracy z dowolną firmą Microsoft Entra (wielodostępną).

  2. Utwórz wpis tajny dla aplikacji Microsoft Entra i zapisz wartość (ta wartość będzie potrzebna później).

  3. Przejdź do strony Kontrola dostępu (IAM) dla tematu usługi Event Grid. Przypisz rolę Współautor usługi Event Grid do aplikacji microsoft Entra składnika zapisywania subskrypcji usługi Event Grid. Ten krok umożliwia aplikacji dostęp do zasobu usługi Event Grid po zalogowaniu się na platformie Azure przy użyciu aplikacji Microsoft Entra przy użyciu interfejsu wiersza polecenia platformy Azure.

Dzierżawa B

Wykonaj następujące kroki w dzierżawie B:

  1. Utwórz aplikację Entra firmy Microsoft dla elementu webhook skonfigurowanego do pracy z firmą Microsoft Entra (pojedyncza dzierżawa).

  2. Otwórz usługę Azure Shell i wybierz środowisko programu PowerShell.

  3. Zmodyfikuj wartość $webhookAadTenantId, aby nawiązać połączenie z dzierżawą B.

    • Zmienne:

      • $webhookAadTenantId: identyfikator dzierżawy platformy Azure dla dzierżawy B
      $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
      Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
      
  4. Otwórz następujący skrypt i zaktualizuj wartości $webhookAppObjectId i $eventSubscriptionWriterAppId przy użyciu identyfikatorów, a następnie kontynuuj uruchamianie skryptu.

    • Zmiennych:
      • $webhookAppObjectId: identyfikator aplikacji Entra firmy Microsoft utworzony dla elementu webhook

      • $eventSubscriptionWriterAppId: Identyfikator aplikacji Entra firmy Microsoft dla składnika zapisywania subskrypcji usługi Event Grid

        Uwaga

        Nie trzeba modyfikować wartości .$eventGridAppId W tym skrypcie dla parametru jest ustawiona wartość $eventGridRoleNameAzureEventGridSecureWebhookSubscriber . Pamiętaj, że aby wykonać ten skrypt, musisz być członkiem roli Administratora aplikacji Entra firmy Microsoft lub być właścicielem jednostki usługi aplikacji elementu webhook w usłudze Microsoft Entra ID.

    Jeśli zostanie wyświetlony następujący komunikat o błędzie, musisz podnieść poziom uprawnień do jednostki usługi. Dodatkowa kontrola dostępu została wprowadzona w ramach tworzenia lub aktualizowania subskrypcji zdarzeń 30 marca 2021 r. w celu rozwiązania luki w zabezpieczeniach. Jednostka usługi klienta subskrybenta musi być właścicielem lub mieć przypisaną rolę w docelowej jednostce usługi aplikacji.

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

Dzierżawa A

Wróć do dzierżawy A, wykonaj następujące kroki:

  1. Otwórz usługę Azure Shell i zaloguj się jako składnik zapisywania subskrypcji usługi Event Grid Firmy Microsoft Entra Application, uruchamiając polecenie .

    az login --service-principal -u [REPLACE_WITH_APP_ID] -p [REPLACE_WITH_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
    
  2. Utwórz subskrypcję, uruchamiając polecenie .

    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
    

    Uwaga

    W tym scenariuszu używamy tematu systemu usługi Event Grid. Zobacz tutaj, jeśli chcesz utworzyć subskrypcję dla tematów niestandardowych lub domen usługi Event Grid przy użyciu interfejsu wiersza polecenia platformy Azure.

  3. Jeśli wszystko zostało poprawnie skonfigurowane, możesz pomyślnie utworzyć subskrypcję elementu webhook w temacie usługi Event Grid.

    Uwaga

    W tym momencie usługa Event Grid przekazuje token elementu nośnego Firmy Microsoft do klienta elementu webhook w każdym komunikacie. Należy zweryfikować token autoryzacji w elemecie webhook.

Następne kroki

  • Aby uzyskać informacje koncepcyjne, zobacz WebHook event delivery (Dostarczanie zdarzeń elementu WebHook).
  • Aby uzyskać informacje na temat monitorowania dostarczania zdarzeń, zobacz Monitorowanie dostarczania komunikatów usługi Event Grid.
  • Aby uzyskać więcej informacji na temat klucza uwierzytelniania, zobacz Zabezpieczenia i uwierzytelnianie usługi Event Grid.
  • Aby uzyskać więcej informacji na temat tworzenia subskrypcji usługi Azure Event Grid, zobacz Schemat subskrypcji usługi Event Grid.