Condividi tramite


Recapitare eventi agli endpoint protetti di Microsoft Entra

Questo articolo descrive come usare Microsoft Entra ID per proteggere la connessione tra la sottoscrizione di eventi e l'endpoint del webhook. Usa il portale di Azure per la dimostrazione, ma la funzionalità può essere abilitata anche tramite l'interfaccia della riga di comando, PowerShell o gli SDK.

Importante

Il controllo aggiuntivo sull'accesso è stato introdotto nell'ambito della creazione o dell'aggiornamento della sottoscrizione di eventi il 30 marzo 2021 per risolvere una vulnerabilità di sicurezza. L'entità servizio del client del sottoscrittore deve essere un proprietario o avere un ruolo assegnato nell'entità servizio dell'applicazione di destinazione. Riconfigurare l'applicazione Microsoft Entra seguendo le nuove istruzioni riportate di seguito. Per una panoramica delle applicazioni Microsoft Entra e delle entità servizio, vedere Panoramica di Microsoft Identity Platform (v2.0).

Scenari

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

Recapitare eventi a un webhook nello stesso tenant di Microsoft Entra

Il diagramma seguente illustra il modo in cui gli eventi di Griglia di eventi vengono recapitati a un webhook nello stesso tenant della sottoscrizione di eventi.

Immagine che illustra il recapito sicuro degli eventi a un webhook nello stesso tenant.

In questa sezione sono presenti due sottosezioni. Leggere entrambi gli scenari o quello a cui si è interessati.

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 dell'entità 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 l'entità servizio. Un ulteriore controllo sull'accesso è stato introdotto nell'ambito della creazione o dell'aggiornamento della sottoscrizione di eventi il 30 marzo 2021 per risolvere una vulnerabilità di sicurezza. L'entità servizio del client del sottoscrittore deve essere un proprietario o avere un ruolo assegnato 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.

      Selezionare il webhook come tipo di endpoint

    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.

        Usare l'azione Webhook

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

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

  1. Creare un'applicazione Microsoft Entra per il writer della sottoscrizione di Griglia di eventi configurato per l'uso 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 l'argomento Griglia di eventi e assegnare il ruolo Collaboratore Griglia di eventi all'app writer di sottoscrizioni di Griglia di eventi. 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'app writer di sottoscrizioni di Griglia 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.

  8. Accedere come writer della sottoscrizione di Griglia di eventi dell'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 correttamente 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. Sarà necessario convalidare il token di autorizzazione nel webhook.

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

Per proteggere la connessione tra la sottoscrizione di eventi e l'endpoint webhook che si trovano in tenant Microsoft Entra diversi, è necessario usare un'applicazione 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.

Eventi multi-tenant con Microsoft Entra ID e Webhook

In base al diagramma, seguire i passaggi successivi per configurare entrambi i tenant.

Tenant A

Seguire questa procedura in Tenant A:

  1. Creare un'applicazione Microsoft Entra per il writer della sottoscrizione di Griglia di eventi configurato per l'uso con 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 consente all'applicazione di avere accesso alla risorsa di Griglia di eventi quando si accede ad Azure con l'applicazione Microsoft Entra usando l'interfaccia della riga di comando di Azure.

Tenant B

Seguire questa procedura in Tenant B:

  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, quindi continuare a eseguire lo script.

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

      • $eventSubscriptionWriterAppId: ID applicazione di Microsoft Entra per il writer di sottoscrizioni di Griglia 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 l'entità servizio. Un ulteriore controllo sull'accesso è stato introdotto nell'ambito della creazione o dell'aggiornamento della sottoscrizione di eventi il 30 marzo 2021 per risolvere una vulnerabilità di sicurezza. L'entità servizio del client del sottoscrittore deve essere un proprietario o avere un ruolo assegnato nell'entità servizio dell'applicazione di destinazione.

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

Tenant A

Tornando al Tenant A, seguire questa procedura:

  1. Aprire Azure Shell e accedere come writer della sottoscrizione di Griglia di eventi dell'applicazione Microsoft Entra 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 viene usato un argomento di sistema di Griglia di eventi. Per creare una sottoscrizione per argomenti o domini di Griglia di eventi personalizzati usando l'interfaccia della riga di comando di Azure, vedere qui.

  3. Se tutto è stato configurato correttamente, è possibile creare correttamente 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. Sarà necessario convalidare il token di autorizzazione nel webhook.

Passaggi successivi