Condividi tramite


Consegnare eventi agli endpoint protetti di Microsoft Entra

Questo articolo descrive come proteggere il recapito di eventi da Griglia di eventi di Azure (sottoscrizioni di eventi) agli endpoint webhook usando l'autenticazione dell'ID Microsoft Entra. Si apprenderà come configurare le applicazioni Microsoft Entra e assegnare i ruoli appropriati per stabilire connessioni autenticate tra Griglia di eventi e i webhook. L'articolo usa il portale di Azure per la dimostrazione. Tuttavia, è anche possibile abilitare la funzionalità usando l'interfaccia della riga di comando, PowerShell o gli SDK.

Importante

Per risolvere una vulnerabilità di sicurezza, Microsoft ha introdotto un controllo di accesso aggiuntivo come parte della creazione o dell'aggiornamento di una sottoscrizione di eventi il 30 marzo 2021. Il principale del servizio del client sottoscrittore deve essere assegnato come proprietario o avere un ruolo assegnato nel principale del servizio dell'applicazione di destinazione. Riconfigurare l'applicazione Microsoft Entra seguendo le nuove istruzioni in questo articolo. Per una panoramica delle applicazioni e dei principali del servizio di Microsoft Entra, vedere Panoramica della Piattaforma di identità Microsoft (v2.0).

Scenari

Questo articolo illustra in dettaglio come implementare i due scenari seguenti:

Inviare eventi a un webhook nello stesso tenant di Microsoft Entra

Il diagramma seguente mostra come Event Grid recapiti gli eventi a un webhook appartenente allo stesso tenant della sottoscrizione di eventi.

Immagine che illustra la consegna sicura degli eventi a un webhook che si trova nello stesso tenant.

In questa sezione sono presenti due sottosezioni. Leggi entrambi gli scenari o quello che ti interessa.

Configurare la sottoscrizione di eventi usando un utente di Microsoft Entra

Questa sezione illustra come configurare la sottoscrizione di eventi usando un utente di Microsoft Entra.

  1. Creare un'applicazione Microsoft Entra per il webhook configurato per l'uso con Microsoft Entra (tenant singolo).

  2. Aprire Azure Shell nel tenant e selezionare l'ambiente PowerShell.

  3. Modificare il valore di $webhookAadTenantId per connettersi al tenant.

    • Variabili:
      • $webhookAadTenantId: ID tenant di Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  4. Aprire lo script seguente e aggiornare i valori di $webhookAppObjectId e $eventSubscriptionWriterUserPrincipalName con gli identificatori, quindi continuare a eseguire lo script.

    • Variabili:
      • $webhookAppObjectId: ID applicazione Microsoft Entra creato per il webhook
      • $eventSubscriptionWriterUserPrincipalName: nome principale utente di Azure dell'utente che crea una sottoscrizione di eventi

    Nota

    Non è necessario modificare il valore di $eventGridAppId. In questo script, AzureEventGridSecureWebhookSubscriber è impostato per $eventGridRoleName. Tenere presente che, per eseguire questo script, è necessario essere un membro del ruolo di amministratore dell'applicazione Microsoft Entra o essere proprietario dell'entità servizio dell'app webhook in Microsoft Entra ID.

    Se viene visualizzato il messaggio di errore seguente, è necessario elevare i privilegi sull'entità del servizio. Un controllo di accesso aggiuntivo è stato introdotto come parte della creazione o dell'aggiornamento della sottoscrizione di eventi il 30 marzo 2021 per risolvere una vulnerabilità di sicurezza. Il principale del servizio del client sottoscrittore deve essere assegnato come proprietario o avere un ruolo assegnato nel principale del servizio dell'applicazione di destinazione.

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    
  5. Nel portale, per la creazione di una sottoscrizione di eventi, seguire questa procedura:

    1. Selezionare il tipo di endpoint Webhook.

    2. Specificare l'URI dell'endpoint.

      Screenshot della selezione del tipo di endpoint webhook nel portale di Azure.

    3. Selezionare la scheda Funzionalità aggiuntive nella parte superiore della pagina Crea sottoscrizioni di eventi.

    4. Nella scheda Funzionalità aggiuntive, seguire questa procedura:

      1. Selezionare Usa autenticazione di Microsoft Entra e configurare l'ID tenant e l'ID applicazione:

      2. Copiare l'ID tenant di Microsoft Entra dall'output dello script e immetterlo nel campo ID tenant di Microsoft Entra.

      3. Copiare l'ID applicazione di Microsoft Entra dall'output dello script e immetterlo nel campo ID applicazione di Microsoft Entra. È possibile usare l'URI dell'ID applicazione di Microsoft Entra invece di usare l'ID applicazione. Per altre informazioni sull'URI dell'ID applicazione, vedere questo articolo.

        Screenshot della configurazione sicura dell'azione webhook nel portale di Azure.

Configurare la sottoscrizione di eventi usando un'applicazione di Microsoft Entra.

Questa sezione illustra come configurare la sottoscrizione di eventi usando un'applicazione di Microsoft Entra.

  1. Creare un'applicazione Microsoft Entra per il ruolo di "scrittore della sottoscrizione" di Event Grid configurato per funzionare con Microsoft Entra (tenant singolo).

  2. Creare un segreto per l'applicazione Microsoft Entra e salvare il valore (questo valore sarà necessario in un secondo momento).

  3. Passare alla pagina Gestione delle identità e degli accessi (IAM) per Event Grid e assegnare il ruolo di Event Grid Contributor all'applicazione di scrittura delle sottoscrizioni di Event Grid. Questo passaggio consente di avere accesso alla risorsa di Griglia di eventi quando si è connessi ad Azure con l'applicazione Microsoft Entra usando l'interfaccia della riga di comando di Azure.

  4. Creare un'applicazione Microsoft Entra per il webhook configurato per l'uso con Microsoft Entra (tenant singolo).

  5. Aprire Azure Shell nel tenant e selezionare l'ambiente PowerShell.

  6. Modificare il valore di $webhookAadTenantId per connettersi al tenant.

    • Variabili:
      • $webhookAadTenantId: ID tenant di Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  7. Aprire lo script seguente e aggiornare i valori di $webhookAppObjectId e $eventSubscriptionWriterAppId con gli identificatori, quindi continuare a eseguire lo script.

    • Variabili:
      • $webhookAppObjectId: ID applicazione Microsoft Entra creato per il webhook
      • $eventSubscriptionWriterAppId: ID applicazione di Microsoft Entra per l'applicazione di scrittura delle sottoscrizioni di Event Grid.

    Nota

    Non è necessario modificare il valore di $eventGridAppId. In questo script, AzureEventGridSecureWebhookSubscriber è impostato per $eventGridRoleName. Tenere presente che, per eseguire questo script, è necessario essere un membro del ruolo di amministratore dell'applicazione Microsoft Entra o essere proprietario dell'entità servizio dell'app webhook in Microsoft Entra ID.

  8. Accedere come scrittore della sottoscrizione di Event Grid dall'applicazione Microsoft Entra eseguendo il comando.

    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. Creare la sottoscrizione eseguendo il comando .

    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
    

    Nota

    Questo scenario usa un argomento di sistema. Per creare una sottoscrizione per argomenti o domini personalizzati usando l'interfaccia della riga di comando di Azure, vedere le informazioni di riferimento sull'interfaccia della riga di comando.

  10. Se tutto è stato configurato correttamente, è possibile creare la sottoscrizione webhook nell'argomento griglia di eventi.

    Nota

    A questo punto, Griglia di eventi sta passando il token di connessione Microsoft Entra al client webhook in ogni messaggio. È necessario convalidare il token di autorizzazione nel webhook.

Inviare eventi a un webhook in un tenant diverso di Microsoft Entra

Per proteggere la connessione tra la tua sottoscrizione di eventi e l'endpoint webhook, che si trovano in tenant Microsoft Entra diversi, utilizza un'applicazione di Microsoft Entra ID come illustrato in questa sezione. Attualmente, non è possibile proteggere questa connessione usando un utente di Microsoft Entra ID nel portale di Azure.

Screenshot degli eventi multitenant con diagramma di Microsoft Entra ID e Webhooks.

In base allo schema, seguire i passaggi successivi per configurare entrambi i tenant.

Inquilino A

Completare i passaggi seguenti in Tenant A:

  1. Creare un'applicazione Microsoft Entra per lo scrittore della sottoscrizione di Event Grid configurata per l'uso con qualsiasi Microsoft Entra (multi-tenant).

  2. Creare un segreto per l'applicazione Microsoft Entra e salvare il valore (questo valore sarà necessario in un secondo momento).

  3. Passare alla pagina Controllo di accesso (IAM) per l'argomento Griglia di eventi. Assegnare il ruolo Collaboratore Griglia di eventi all'applicazione Microsoft Entra del writer di sottoscrizione di Griglia di eventi. Questo passaggio concede all'applicazione l'accesso alla risorsa griglia di eventi quando si accede ad Azure usando l'applicazione Microsoft Entra e l'interfaccia della riga di comando di Azure.

Inquilino B

In Tenant B completare la procedura seguente:

  1. Creare un'applicazione Microsoft Entra per il webhook configurato per l'uso con Microsoft Entra (tenant singolo).

  2. Aprire Azure Shell e selezionare l'ambiente PowerShell.

  3. Modificare il valore $webhookAadTenantId per connettersi al tenant B.

    • Variabili:

      • $webhookAadTenantId: ID tenant di Azure per il tenant B
      $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
      Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
      
  4. Aprire lo script seguente e aggiornare i valori di $webhookAppObjectId e $eventSubscriptionWriterAppId con gli identificatori. Continuare quindi a eseguire lo script.

    • Variabili:
      • $webhookAppObjectId: ID applicazione Microsoft Entra creato per il webhook

      • $eventSubscriptionWriterAppId: ID applicazione di Microsoft Entra per il sottoscrittore di Event Grid

        Nota

        Non è necessario modificare il valore di $eventGridAppId. In questo script, AzureEventGridSecureWebhookSubscriber è impostato per $eventGridRoleName. Tenere presente che, per eseguire questo script, è necessario essere un membro del ruolo di amministratore dell'applicazione Microsoft Entra o essere proprietario dell'entità servizio dell'app webhook in Microsoft Entra ID.

    Se viene visualizzato il messaggio di errore seguente, è necessario elevare i privilegi sull'entità del servizio. Un controllo di accesso aggiuntivo è stato introdotto come parte della creazione o dell'aggiornamento della sottoscrizione di eventi il 30 marzo 2021 per risolvere una vulnerabilità di sicurezza. Il principale del servizio del client sottoscrittore deve essere assegnato come proprietario o avere un ruolo assegnato nel principale del servizio dell'applicazione di destinazione.

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

Inquilino A

In Tenant A completare la procedura seguente:

  1. Aprire Azure Shell e accedere come writer della sottoscrizione di Griglia di eventi Microsoft Entra Application eseguendo il comando .

    az login --service-principal -u [REPLACE_WITH_APP_ID] -p [REPLACE_WITH_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
    
  2. Creare la sottoscrizione eseguendo il comando .

    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
    

    Nota

    In questo scenario si utilizza un argomento di sistema di Event Grid. Per creare una sottoscrizione per argomenti personalizzati o domini di Griglia di eventi usando l'interfaccia della riga di comando di Azure, vedere qui.

  3. Se tutto è stato configurato correttamente, è possibile creare la sottoscrizione webhook nell'argomento griglia di eventi.

    Nota

    A questo punto, Event Grid passa il Bearer token di Microsoft Entra al client webhook in ogni messaggio. È necessario convalidare il token di autorizzazione nel webhook.