Entrega de evento con una identidad administrada

En este artículo se describe cómo usar una identidad de servicio administrada para un tema del sistema de Azure Event Grid, un tema personalizado o un dominio. Úselo para reenviar eventos a destinos compatibles, como colas y temas de Service Bus, centros de eventos y cuentas de almacenamiento.

Prerrequisitos

  1. Asigne una identidad asignada por el sistema o por el usuario a un tema del sistema, un tema personalizado o un dominio.

  2. Agregue la identidad a un rol adecuado (por ejemplo, Remitente de los datos de Service Bus) en el destino (por ejemplo, una cola de Service Bus). Para obtener pasos detallados, consulte Adición de una identidad a los roles de Azure en destinos de Azure Event Grid.

    Nota

    Actualmente, no es posible enviar eventos mediante puntos de conexión privados. Para obtener más información, consulte la sección Puntos de conexión privado al final de este artículo.

Creación de suscripciones de eventos que usan una identidad

Una vez que tenga un tema personalizado de Event Grid, un tema o un dominio del sistema con una identidad administrada y haya agregado la identidad al rol adecuado en el destino, estará listo para crear suscripciones que usen la identidad.

Uso de Azure Portal

Al crear una suscripción de evento, se ve una opción para habilitar el uso de una identidad asignada por el sistema o por el usuario para un punto de conexión en la sección DETALLES DE PUNTO DE CONEXIÓN.

Este es un ejemplo de la habilitación de una identidad asignada por el sistema al crear una suscripción de evento con una cola de Service Bus como destino.

Screenshot that shows how to enable an identity when creating an event subscription for a Service Bus queue.

También puede habilitar el uso de una identidad asignada por el sistema para que se use en la cola de mensajes fallidos en la pestaña Características adicionales.

Screenshot that shows how to enable a system-assigned identity for dead-lettering.

Puede habilitar una identidad administrada en una suscripción de eventos después de crearla. En la página Suscripción de evento de la suscripción de evento, vaya a la pestaña Características adicionales para ver la opción. También puede habilitar la identidad para mensajes fallidos en esta página.

Screenshot that shows how to enable a system-assigned identity on an existing event subscription.

Si ha habilitado identidades asignadas por el usuario para el tema, verá la opción de identidad asignada por el usuario habilitada en la lista desplegable Tipo de identidad administrada. Si selecciona Asignada por el usuario en Tipo de identidad administrada, luego puede seleccionar la identidad asignada por el usuario que quiera emplear para entregar eventos.

Screenshot that shows how to enable a user-assigned identity on an event subscription.

Uso de la CLI de Azure: cola de Service Bus

En esta sección, aprenderá a usar la CLI de Azure para habilitar el uso de una identidad asignada por el sistema para enviar eventos a una cola de Service Bus. La identidad debe ser miembro del rol Emisor de datos de Azure Service Bus. También debe ser miembro del rol Colaborador de datos de blobs de almacenamiento en la cuenta de almacenamiento que se usa para la cola de mensajes fallidos.

Definición de variables

En primer lugar, especifique los valores de las siguientes variables que se usarán en el comando de la CLI.

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>" 

Creación de una suscripción de eventos usando una identidad administrada para la entrega

Este comando de ejemplo crea una suscripción de eventos para un tema personalizado de Event Grid con un tipo de punto de conexión establecido en cola de 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 

Creación de una suscripción de eventos usando una identidad administrada para la entrega y cola de mensajes fallidos

Este comando de ejemplo crea una suscripción de eventos para un tema personalizado de Event Grid con un tipo de punto de conexión establecido en cola de Service Bus. También especifica que la identidad administrada por el sistema se va a usar para la cola de mensajes fallidos.

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_esnameq 

Uso de la CLI de Azure: Event Hubs

En esta sección, aprenderá a usar la CLI de Azure para habilitar el uso de una identidad asignada por el sistema para enviar eventos a un centro de eventos. La identidad debe ser miembro del rol Emisor de datos de Azure Event Hubs. También debe ser miembro del rol Colaborador de datos de blobs de almacenamiento en la cuenta de almacenamiento que se usa para la cola de mensajes fallidos.

Definición de 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>" 

Creación de una suscripción de eventos usando una identidad administrada para la entrega

Este comando de ejemplo crea una suscripción de eventos para un tema personalizado de Event Grid con un tipo de punto de conexión establecido en 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 $sbq_esname 

Creación de una suscripción de eventos usando una identidad administrada para la entrega y cola de mensajes fallidos

Este comando de ejemplo crea una suscripción de eventos para un tema personalizado de Event Grid con un tipo de punto de conexión establecido en Event Hubs. También especifica que la identidad administrada por el sistema se va a usar para la cola de mensajes fallidos.

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 $hubid
    --deadletter-identity-endpoint $eh_deadletterendpoint
    --deadletter-identity systemassigned 
    -n $eh_esname 

Uso de la CLI de Azure: cola de Azure Storage

En esta sección, aprenderá a usar la CLI de Azure para habilitar el uso de una identidad asignada por el sistema para enviar eventos a una cola de Azure Storage. La identidad debe ser miembro del rol Emisor de mensajes de datos de la cola de Storage de la cuenta de almacenamiento. También debe ser miembro del rol Colaborador de datos de blobs de almacenamiento en la cuenta de almacenamiento que se usa para la cola de mensajes fallidos.

Definición de 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>" 

Creación de una suscripción de eventos usando una identidad administrada para la entrega

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 

Creación de una suscripción de eventos usando una identidad administrada para la entrega y cola de mensajes fallidos

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 

Puntos de conexión privados

Actualmente, no es posible enviar eventos mediante puntos de conexión privados. Es decir, no hay compatibilidad si tiene requisitos de aislamiento de red estrictos por los que el tráfico de eventos entregados no debe abandonar el espacio de la IP privada.

Sin embargo, si los requisitos requieren una manera segura de enviar eventos mediante un canal cifrado y una identidad conocida del remitente (en este caso, Event Grid) mediante el espacio de IP pública, podría entregar eventos a Event Hubs, Service Bus o servicio de Azure Storage mediante un tema personalizado de Azure Event Grid o un dominio con una identidad administrada, como se muestra en este artículo. Después, puede usar un vínculo privado configurado en Azure Functions o en el webhook implementado en la red virtual para extraer eventos. Consulte el tutorial: Conexión a puntos de conexión privados con Azure Functions.

En esta configuración, el tráfico pasa por la dirección IP pública/Internet desde Event Grid hasta Event Hubs, Service Bus o Azure Storage, pero el canal se puede cifrar y se usa una identidad administrada de Event Grid. Si configura Azure Functions o el webhook implementado en la red virtual para usar una instancia de Event Hubs, Service Bus o Azure Storage a través de un vínculo privado, esa sección del tráfico permanecerá en Azure de forma evidente.

Pasos siguientes

Para más información sobre las identidades administradas, consulte ¿Qué son las identidades administradas de recursos de Azure?.