Remettre des événements aux points de terminaison protégés par Microsoft Entra

Cet article explique comment utiliser Microsoft Entra ID pour sécuriser la connexion entre votre abonnement aux événements et votre point de terminaison du webhook. Il utilise le portail Azure à des fins de démonstration, mais la fonctionnalité peut également être activée à l’aide de l’interface CLI, de PowerShell ou des kits de développement logiciel (SDK).

Important

Une vérification d’accès supplémentaire a été introduite dans le cadre de la création ou de la mise à jour de l’abonnement aux événements le 30 mars 2021 afin de résoudre une faille de sécurité. Le principal de service du client abonné doit être soit propriétaire, soit avoir un rôle attribué sur le principal de service de l’application de destination. Reconfigurez votre application Microsoft Entra en suivant les nouvelles instructions ci-dessous. Pour obtenir une vue d’ensemble des applications et des principaux de service Microsoft Entra, consultez Présentation de la plateforme d’identités Microsoft (v2.0).

Scénarios

Cet article explique en détail comment implémenter les deux scénarios suivants :

Remettre des événements à un webhook dans le même locataire Microsoft Entra

Le diagramme suivant montre comment des événements Event Grid sont remis à un webhook se trouvant dans le même locataire que l’abonnement aux événements.

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

Cette section comprend deux sous-sections. Lisez les deux scénarios ou celui qui vous intéresse.

Configurer l’abonnement aux événements à l’aide d’un utilisateur Microsoft Entra

Cette section montre comment configurer l’abonnement aux événements à l’aide d’un utilisateur Microsoft Entra.

  1. Créez une application Microsoft Entra pour le webhook configuré pour fonctionner avec Microsoft Entra (monolocataire).

  2. Ouvrez Azure Shell dans le locataire, puis sélectionnez l’environnement PowerShell.

  3. Modifiez la valeur de $webhookAadTenantId pour vous connecter au locataire.

    • Variables:
      • $webhookAadTenantId : ID de locataire Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  4. Ouvrez le script suivant et mettez à jour les valeurs de $webhookAppObjectId et $eventSubscriptionWriterUserPrincipalName avec vos identificateurs, puis poursuivez l’exécution du script.

    • Variables:
      • $webhookAppObjectId : ID d’application Microsoft Entra créé pour le webhook
      • $eventSubscriptionWriterUserPrincipalName : nom d’utilisateur principal Azure de l’utilisateur qui crée l’abonnement aux événements

    Notes

    Vous n’avez pas besoin de modifier la valeur de $eventGridAppId. Dans ce script, AzureEventGridSecureWebhookSubscriber est défini pour le $eventGridRoleName. N’oubliez pas que vous devez être membre du rôle Administrateur d’application Microsoft Entra ou être propriétaire du principal de service de l’application Webhook dans Microsoft Entra ID pour exécuter ce script.

    Si vous voyez le message d’erreur suivant, vous devez accéder au principal de service. Une vérification d’accès supplémentaire a été introduite dans le cadre de la création ou de la mise à jour de l’abonnement aux événements le 30 mars 2021 afin de résoudre une faille de sécurité. Le principal de service du client abonné doit être soit propriétaire, soit avoir un rôle attribué sur le principal de service de l’application de destination.

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    
  5. Dans le portail, lorsque vous créez un abonnement aux événements, procédez comme suit :

    1. Sélectionnez le type de point de terminaison Webhook.

    2. Spécifiez l’URIdu point de terminaison.

      Select endpoint type webhook

    3. Sélectionnez l’onglet Fonctionnalités supplémentaires en haut de la page Créer des abonnements aux événements.

    4. Sous l’onglet Fonctionnalités supplémentaires, procédez comme suit :

      1. Sélectionnez Utiliser l’authentification Microsoft Entra, puis configurez l’ID de locataire et l’ID d’application :

      2. Copiez l’ID de locataire Microsoft Entra à partir de la sortie du script, puis entrez-le dans le champ ID de locataire Microsoft Entra.

      3. Copiez l’ID d’application Microsoft Entra à partir de la sortie du script, puis entrez-le dans le champ ID d’application Microsoft Entra. Vous pouvez utiliser l’URI de l’ID d’application Microsoft Entra au lieu d’utiliser l’ID de l’application. Pour plus d’informations sur l’URI de l’ID d’application, consultez cet article.

        Secure Webhook action

Configurer l’abonnement aux événements à l’aide d’une application Microsoft Entra

Cette section montre comment configurer l’abonnement aux événements à l’aide d’une application Microsoft Entra.

  1. Créez une application Microsoft Entra pour l’enregistreur d’abonnements Event Grid configuré pour fonctionner avec Microsoft Entra (monolocataire).

  2. Créez un secret pour l’application Microsoft Entra et enregistrez la valeur (vous aurez besoin de cette valeur plus tard).

  3. Accédez à la page Contrôle d’accès (IAM) de la rubrique Event Grid et attribuez le rôle Contributeur Event Grid à l’application enregistreur d’abonnements Event Grid. Cette étape vous permet d’avoir accès à la ressource Event Grid lorsque vous vous connectez à Azure avec l’application Microsoft Entra à l’aide d’Azure CLI.

  4. Créez une application Microsoft Entra pour le webhook configuré pour fonctionner avec Microsoft Entra (monolocataire).

  5. Ouvrez Azure Shell dans le locataire, puis sélectionnez l’environnement PowerShell.

  6. Modifiez la valeur de $webhookAadTenantId pour vous connecter au locataire.

    • Variables:
      • $webhookAadTenantId : ID de locataire Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  7. Ouvrez le script suivant et mettez à jour les valeurs de $webhookAppObjectId et $eventSubscriptionWriterAppId avec vos identificateurs, puis poursuivez l’exécution du script.

    • Variables:
      • $webhookAppObjectId : ID d’application Microsoft Entra créé pour le webhook
      • $eventSubscriptionWriterAppId : ID d’application Microsoft Entra pour l’application d’enregistreur d’abonnements Event Grid.

    Remarque

    Vous n’avez pas besoin de modifier la valeur de $eventGridAppId. Dans ce script, AzureEventGridSecureWebhookSubscriber comme défini pour le $eventGridRoleName. N’oubliez pas que vous devez être membre du rôle Administrateur d’application Microsoft Entra ou être propriétaire du principal de service de l’application Webhook dans Microsoft Entra ID pour exécuter ce script.

  8. Connectez-vous en tant qu’application Microsoft Entra d’enregistreur d’abonnements Event Grid en exécutant la commande.

    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. Créez votre abonnement en exécutant la commande.

    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
    

    Notes

    Ce scénario utilise une rubrique système. Si vous souhaitez créer un abonnement pour des rubriques ou des domaines personnalisés à l’aide d’Azure CLI, consultez Référence d’interface de ligne de commande.

  10. Si tout a été correctement configuré, vous pourrez créer l’abonnement webhook dans votre rubrique Event Grid.

    Remarque

    À ce stade, Event Grid transmet le jeton du porteur Microsoft Entra au client Webhook dans chaque message. Vous devez valider le jeton d’autorisation dans votre webhook.

Remettre des événements à un webhook dans un locataire Microsoft Entra différent

Pour sécuriser la connexion entre votre abonnement aux événements et votre point de terminaison de webhook qui se trouvent dans différents locataires Microsoft Entra, vous devez utiliser une application Microsoft Entra ID comme indiqué dans cette section. Actuellement, il n’est pas possible de sécuriser cette connexion à l’aide d’un utilisateur Microsoft Entra ID dans le portail Azure.

Multitenant events with Microsoft Entra ID and Webhooks

Sur la base du diagramme, procédez comme suit pour configurer les locataires.

Locataire A

Procédez comme suit dans le Locataire A :

  1. Créez une application Microsoft Entra pour l’enregistreur d’abonnements Event Grid configuré pour fonctionner avec n’importe quel Microsoft Entra (multilocataire).

  2. Créez un secret pour l’application Microsoft Entra et enregistrez la valeur (vous aurez besoin de cette valeur plus tard).

  3. Accédez à la page Contrôle d’accès (IAM) de la rubrique Event Grid. Attribuez le rôle Contributeur Event Grid à l’application Microsoft Entra de l’enregistreur d’abonnements Event Grid. Cette étape permet à l’application d’accéder à la ressource Event Grid lorsque vous vous connectez à Azure avec l’application Microsoft Entra à l’aide d’Azure CLI.

Locataire B

Procédez comme suit dans le Locataire B :

  1. Créez une application Microsoft Entra pour le webhook configuré pour fonctionner avec Microsoft Entra (monolocataire).

  2. Ouvrez Azure Shell, puis sélectionnez l’environnement PowerShell.

  3. Modifiez la valeur $webhookAadTenantId pour vous connecter au locataire B.

    • Variables:

      • $webhookAadTenantId : ID de locataire Azure pour le locataire B
      $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
      Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
      
  4. Ouvrez le script suivant et mettez à jour les valeurs de $webhookAppObjectId et $eventSubscriptionWriterAppId avec vos identificateurs, puis poursuivez l’exécution du script.

    • Variables:
      • $webhookAppObjectId : ID d’application Microsoft Entra créé pour le webhook

      • $eventSubscriptionWriterAppId : ID d’application Microsoft Entra pour l’enregistreur d’abonnements Event Grid

        Remarque

        Vous n’avez pas besoin de modifier la valeur de $eventGridAppId. Dans ce script, AzureEventGridSecureWebhookSubscriber comme défini pour $eventGridRoleName. N’oubliez pas que vous devez être membre du rôle Administrateur d’application Microsoft Entra ou être propriétaire du principal de service de l’application Webhook dans Microsoft Entra ID pour exécuter ce script.

    Si vous voyez le message d’erreur suivant, vous devez accéder au principal de service. Une vérification d’accès supplémentaire a été introduite dans le cadre de la création ou de la mise à jour de l’abonnement aux événements le 30 mars 2021 afin de résoudre une faille de sécurité. Le principal de service du client abonné doit être soit propriétaire, soit avoir un rôle attribué sur le principal de service de l’application de destination.

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

Locataire A

Revenez dans le Locataire A et procédez comme suit :

  1. Ouvrez Azure Shell, puis connectez-vous en tant qu’application Microsoft Entra d’enregistreur d’abonnements Event Grid en exécutant la commande.

    az login --service-principal -u [REPLACE_WITH_APP_ID] -p [REPLACE_WITH_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
    
  2. Créez votre abonnement en exécutant la commande.

    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
    

    Notes

    Dans ce scénario, nous utilisons une rubrique système Event Grid. Consultez cette page si vous souhaitez créer un abonnement pour des rubriques personnalisées ou des domaines Event Grid à l’aide d’Azure CLI.

  3. Si tout a été correctement configuré, vous pourrez créer l’abonnement webhook dans votre rubrique Event Grid.

    Remarque

    À ce stade, Event Grid transmet le jeton du porteur Microsoft Entra au client Webhook dans chaque message. Vous devez valider le jeton d’autorisation dans votre webhook.

Étapes suivantes