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. L'entità servizio del client sottoscrittore deve essere un proprietario o avere un ruolo nell'entità 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:

Consegnare 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. Ricordare che è necessario essere un membro del ruolo amministratore dell'applicazione Microsoft Entra o essere un proprietario dell'entità servizio dell'app webhook in Microsoft Entra ID per eseguire questo script.

    Se viene visualizzato il messaggio di errore seguente, è necessario elevare i privilegi dell'entità 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. L'entità servizio del client sottoscrittore deve essere un proprietario o avere un ruolo nell'entità 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 del 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 in scrittura della sottoscrizione di Griglia di eventi 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. Ricordare che è necessario essere un membro del ruolo amministratore dell'applicazione Microsoft Entra o essere un proprietario dell'entità servizio dell'app webhook in Microsoft Entra ID per eseguire questo script.

  8. Accedere come applicazione Microsoft Entra con ruolo in scrittura della sottoscrizione di Griglia di eventi 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 passa il bearer token Microsoft Entra al client webhook in ogni messaggio. È necessario convalidare il token di autorizzazione nel webhook.

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

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 di eventi multi-tenant con il diagramma Microsoft Entra ID e Webhook.

In base al diagramma, 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 il ruolo in scrittura della sottoscrizione di Griglia di eventi configurato per funzionare 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 ruolo in scrittura della 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. Ricordare che è necessario essere un membro del ruolo amministratore dell'applicazione Microsoft Entra o essere un proprietario dell'entità servizio dell'app webhook in Microsoft Entra ID per eseguire questo script.

    Se viene visualizzato il messaggio di errore seguente, è necessario elevare i privilegi dell'entità 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. L'entità servizio del client sottoscrittore deve essere un proprietario o avere un ruolo nell'entità 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 la shell di Azure e accedere come applicazione Microsoft Entra con ruolo in scrittura della sottoscrizione di Griglia di eventi 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, Griglia di eventi passa il bearer token Microsoft Entra al client webhook in ogni messaggio. È necessario convalidare il token di autorizzazione nel webhook.