Utiliser des identités managées pour distribuer des événements dans Azure Event Grid

Cet article explique comment activer les identités de service managées pour les rubriques système Azure Event Grid, les rubriques personnalisées et les domaines. Il explique également comment utiliser des identités managées pour remettre des événements à des destinations prises en charge, telles que des files d’attente et des rubriques Service Bus, des hubs d’événements et des comptes de stockage.

Conditions préalables

  1. Attribuez une identité affectée par le système ou une identité affectée par l’utilisateur à une rubrique système, une rubrique personnalisée ou un domaine.

  2. Ajoutez l’identité à un rôle approprié, tel que Expéditeur de données Service Bus, sur la destination, par exemple une file d’attente Service Bus. Pour obtenir des instructions détaillées, consultez Ajouter une identité aux rôles Azure sur les destinations.

    Remarque

    Actuellement, vous ne pouvez pas livrer des événements en utilisant des points de terminaison privés. Pour plus d’informations, consultez la section Points de terminaison privés à la fin de cet article.

Créer des abonnements aux événements qui utilisent une identité

Après avoir configuré une rubrique personnalisée Event Grid, une rubrique système ou un domaine avec une identité managée et ajouté l’identité au rôle approprié sur la destination, vous êtes prêt à créer des abonnements qui utilisent l’identité.

Utilisation du portail Azure

Lorsque vous créez un abonnement à un événement, vous voyez une option pour activer une identité assignée par un système ou un utilisateur pour un point de terminaison dans la section DÉTAILS du point de terminaison.

Cet exemple montre comment activer une identité affectée par le système lors de la création d’un abonnement à un événement avec une file d’attente Service Bus en tant que destination.

Capture d’écran d’activation d’une identité assignée par le système pour un abonnement à la file d’attente Service Bus.

Vous pouvez également activer une identité affectée par le système pour la mise en lettres mortes sous l’onglet Fonctionnalités supplémentaires .

Capture d’écran de l’activation d’une identité affectée par le système pour la lettre morte.

Activez une identité managée sur un abonnement aux événements après sa création. Dans la page Abonnement aux événements de l’abonnement aux événements, accédez à l’onglet Fonctionnalités supplémentaires pour afficher l’option. Vous pouvez également activer l’identité pour les lettres mortes sur cette page.

Capture d’écran de l’activation d’une identité affectée par le système sur un abonnement à un événement existant.

Si vous activez les identités attribuées par l’utilisateur pour la rubrique, l’option d’identité attribuée par l’utilisateur apparaît comme activée dans la liste déroulante Managed Identity Type. Si vous sélectionnez User Assigned pour Type d'identité gérée, vous pouvez ensuite sélectionner l'identité utilisateur assignée que vous souhaitez utiliser pour transmettre des événements.

Capture d’écran de l’activation d’une identité attribuée par l’utilisateur sur un abonnement à des événements.

Utilisez la file d’attente Azure CLI - Service Bus

Dans cette section, vous apprenez à utiliser l’Azure CLI pour permettre à une identité assignée au système de livrer des événements à une file d’attente Service Bus. L’identité doit être membre du rôle Expéditeur de données Azure Service Bus et du rôle Contributeur aux données Blob de stockage sur le compte de stockage utilisé pour la lettre morte.

Définir des variables

subid="<AZURE SUBSCRIPTION ID>"
rg="<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname="<EVENT GRID TOPIC NAME>"

# get the service bus queue resource id
queueid=$(az servicebus queue show --namespace-name <SERVICE BUS NAMESPACE NAME> --name <QUEUE NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)
sb_esname="<Specify a name for the event subscription>"

Créer un abonnement aux événements à l’aide d’une identité gérée pour la livraison

Cette commande crée un abonnement aux événements pour une rubrique personnalisée Event Grid avec le type de point de terminaison défini sur la file d’attente Service Bus.

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type servicebusqueue \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $queueid \
    -n $sb_esname

Créer un abonnement à des événements en utilisant une identité managée pour la remise et la mise en file d’attente de lettres mortes

Cet exemple de commande crée un abonnement aux événements pour une rubrique personnalisée Event Grid avec un type de point de terminaison défini sur file d’attente Service Bus. Il précise également qu’Event Grid utilise l’identité managée assignée par le système pour les lettrages morts.

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type servicebusqueue \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $queueid \
    --deadletter-identity-endpoint $deadletterendpoint \
    --deadletter-identity systemassigned \
    -n $sb_esname

Utiliser Azure CLI - Event Hubs

Dans cette section, vous apprenez à utiliser l’Azure CLI pour permettre à une identité assignée au système de livrer des événements à un hub d’événements. L’identité doit être un membre du rôle Expéditeur de données Azure Event Hubs. Elle doit également être membre du rôle Contributeur aux données Blob du stockage sur le compte de stockage utilisé pour la mise en file d'attente de lettres mortes.

Définir des variables

subid="<AZURE SUBSCRIPTION ID>"
rg="<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname="<EVENT GRID CUSTOM TOPIC NAME>"

hubid=$(az eventhubs eventhub show --name <EVENT HUB NAME> --namespace-name <NAMESPACE NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)
eh_esname="<SPECIFY EVENT SUBSCRIPTION NAME>"

Créer un abonnement aux événements à l’aide d’une identité gérée pour la livraison

Cet exemple de commande crée un abonnement aux événements pour une rubrique personnalisée Event Grid avec un type de point de terminaison défini sur Event Hubs.

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type eventhub \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $hubid \
    -n $eh_esname

Créer un abonnement à des événements en utilisant une identité managée pour la remise et la mise en file d’attente de lettres mortes

Cet exemple de commande crée un abonnement aux événements pour une rubrique personnalisée Event Grid avec un type de point de terminaison défini sur Event Hubs. Il précise également que l’identité managée attribuée par le système gère la mise en file de lettres mortes.

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type eventhub \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $hubid \
    --deadletter-identity-endpoint $deadletterendpoint \
    --deadletter-identity systemassigned \
    -n $eh_esname

Utiliser Azure CLI - File d’attente de stockage Azure

Dans cette section, vous apprenez à utiliser la ligne de commande Azure CLI pour permettre à une identité assignée au système de livrer des événements à une file d’attente stockage Azure. L’identité doit être membre du rôle Expéditeur de messages de données en file d’attente du stockage sur le compte de stockage. Elle doit également être membre du rôle Contributeur aux données Blob du stockage sur le compte de stockage utilisé pour la mise en file d'attente de lettres mortes.

Définir des variables

subid="<AZURE SUBSCRIPTION ID>"
rg="<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname="<EVENT GRID CUSTOM TOPIC NAME>"

# get the storage account resource id
storageid=$(az storage account show --name <STORAGE ACCOUNT NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)

# build the resource id for the queue
queueid="$storageid/queueservices/default/queues/<QUEUE NAME>"

sa_esname="<SPECIFY EVENT SUBSCRIPTION NAME>"

Créer un abonnement aux événements à l’aide d’une identité gérée pour la livraison

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type storagequeue \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $queueid \
    -n $sa_esname

Créer un abonnement à des événements en utilisant une identité managée pour la remise et la mise en file d’attente de lettres mortes

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type storagequeue \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $queueid \
    --deadletter-identity-endpoint $deadletterendpoint \
    --deadletter-identity systemassigned \
    -n $sa_esname

Points de terminaison privés

Actuellement, vous ne pouvez pas livrer des événements en utilisant des points de terminaison privés. Autrement dit, il n’existe aucune prise en charge si vous avez des exigences strictes d’isolation réseau où le trafic des événements remis ne doit pas quitter l’espace IP privé.

Cependant, si vos exigences exigent un moyen sécurisé d’envoyer des événements en utilisant un canal chiffré et une identité connue de l’émetteur (dans ce cas, Event Grid) en utilisant un espace IP public, vous pourriez livrer des événements vers des Event Hubs, Service Bus ou un service stockage Azure en utilisant un sujet personnalisé Azure Event Grid ou un domaine avec une identité gérée comme illustré dans cet article. Vous pouvez ensuite utiliser une liaison privée configurée dans Azure Functions ou un webhook déployé sur votre réseau virtuel pour extraire des événements. Consultez le tutoriel : Se connecter à des points de terminaison privés avec Azure Functions.

Dans cette configuration, le trafic passe par l’IP/internet public depuis Event Grid vers Event Hubs, Service Bus ou stockage Azure, mais vous pouvez chiffrer le canal et utiliser une identité gérée appelée Event Grid. Si vous configurez Azure Functions ou un webhook déployé sur votre réseau virtuel pour utiliser Event Hubs, Service Bus ou Stockage Azure via une liaison privée, cette section du trafic reste dans Azure.

Pour en savoir plus sur les identités managées, consultez les identités managées pour les ressources Azure.