Entrega de eventos com uma identidade gerenciada

Este artigo descreve como usar uma identidade de serviço gerenciado para um tópico do sistema de Grade de Eventos do Azure, tópico personalizado ou domínio. Use-o para encaminhar eventos para destinos com suporte, como filas e tópicos de Barramento de Serviço, hubs de eventos e contas de armazenamento.

Pré-requisitos

  1. Atribua uma identidade atribuída pelo sistema ou pelo usuário a um tópico do sistema, um tópico personalizado ou um domínio.

  2. Adicione a identidade a uma função apropriada (por exemplo, remetente de dados do Barramento de Serviço) no destino (por exemplo, uma fila do Barramento de Serviço). Para obter etapas detalhadas, consulte Adicionar identidade às funções do Azure em destinos

    Observação

    Atualmente, não é possível entregar eventos usando pontos de extremidade privados. Para obter mais informações, confira a seção Pontos de extremidade privados no final deste tutorial.

Criar assinaturas de eventos que usam uma identidade

Depois de ter um tópico personalizado da Grade de Eventos ou um tópico do sistema ou domínio com uma identidade gerenciada e adicionar a identidade à função apropriada no destino, você estará pronto para criar assinaturas que usem a identidade.

Use o Portal do Azure

Ao criar uma assinatura de evento, você vê uma opção para habilitar o uso de uma identidade atribuída pelo sistema ou pelo usuário para um ponto de extremidade na seção DETALHES DO PONTO DE EXTREMIDADE.

Este é um exemplo de como habilitar a identidade atribuída pelo sistema durante a criação de uma assinatura de evento com uma fila de Barramento de Serviço como um destino.

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

Você também pode habilitar usando uma identidade atribuída pelo sistema para ser usada para mensagens mortas na guia Recursos Adicionais.

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

Você pode habilitar uma identidade gerenciada em uma assinatura de evento depois que ela for criada. Na página Assinatura de evento da assinatura do evento, alterne para a guia Recursos adicionais para ver a opção. Você também pode habilitar a identidade para letras mortas nesta página.

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

Se você tiver habilitado identidades atribuídas pelo usuário para o tópico, verá a opção de identidade atribuída pelo usuário habilitada na lista suspensa para Tipo de identidade mandado. Se você selecionar Usuário atribuído em Tipo de identidade gerenciada, poderá escolher a identidade atribuída ao usuário que deseja usar para entregar eventos.

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

Usar a CLI do Azure - Fila do Barramento de Serviço

Nesta seção, você aprenderá a usar a CLI do Azure para habilitar o uso de uma identidade atribuída pelo sistema para entregar eventos a uma fila do Barramento de Serviço. A identidade deve ser um membro da função Remetente de dados do Barramento de Serviço do Azure. Ela também deve ser membro da função Colaborador de dados de blobs de armazenamento na conta de armazenamento usada para mensagens mortas.

Definir variáveis

Primeiro, especifique valores para as variáveis a seguir a serem usadas no comando da 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>" 

Criar uma assinatura de evento usando uma identidade gerenciada para entrega

Este comando de exemplo cria uma assinatura de evento para um tópico personalizado da Grade de Eventos com um tipo de ponto de extremidade definido como fila do Barramento de Serviço.

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 

Criar uma assinatura de evento usando uma identidade gerenciada para entrega e mensagens mortas

Este comando de exemplo cria uma assinatura de evento para um tópico personalizado da Grade de Eventos com um tipo de ponto de extremidade definido como fila do Barramento de Serviço. Ele também especifica que a identidade gerenciada pelo sistema deve ser usada para mensagens mortas.

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 

Usar a CLI do Azure - Hubs de Eventos

Nesta seção, você aprenderá a usar a CLI do Azure para habilitar o uso de uma identidade atribuída pelo sistema para entregar eventos a um hub de eventos. A identidade deve ser um membro da função Remetente de dados dos Hubs de Eventos do Azure. Ela também deve ser membro da função Colaborador de dados de blobs de armazenamento na conta de armazenamento usada para mensagens mortas.

Definir variáveis

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

Criar uma assinatura de evento usando uma identidade gerenciada para entrega

Este comando de exemplo cria uma assinatura de evento para um tópico personalizado da Grade de Eventos com um tipo de ponto de extremidade definido como Hubs de Eventos.

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 

Criar uma assinatura de evento usando uma identidade gerenciada para entrega + mensagens mortas

Este comando de exemplo cria uma assinatura de evento para um tópico personalizado da Grade de Eventos com um tipo de ponto de extremidade definido como Hubs de Eventos. Ele também especifica que a identidade gerenciada pelo sistema deve ser usada para mensagens mortas.

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 

Usar a CLI do Azure - Fila de Armazenamento do Azure

Nesta seção, você aprenderá a usar a CLI do Azure para habilitar o uso de uma identidade atribuída pelo sistema para entregar eventos a uma fila de Armazenamento do Azure. A identidade deve ser membro da função Remetente da Mensagem de Dados da Fila de Armazenamento na conta de armazenamento. Ela também deve ser membro da função Colaborador de dados de blobs de armazenamento na conta de armazenamento usada para mensagens mortas.

Definir variáveis

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

Criar uma assinatura de evento usando uma identidade gerenciada para 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 

Criar uma assinatura de evento usando uma identidade gerenciada para entrega + mensagens mortas

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 

Pontos de extremidade privados

Atualmente, não é possível entregar eventos usando pontos de extremidade privados. Ou seja, não haverá suporte se você tiver requisitos rígidos de isolamento de rede em que o tráfego de eventos entregues não pode sair do espaço de IP privado.

No entanto, se seus requisitos exigirem uma maneira segura de enviar eventos usando um canal criptografado e uma identidade conhecida do remetente (neste caso, Grade de Eventos) usando espaço IP público, você poderá entregar eventos para Hubs de Eventos, Barramento de Serviço ou serviço de Armazenamento do Azure usando um tópico personalizado da Grade de Eventos do Azure ou um domínio com uma identidade gerenciada, conforme mostrado neste artigo. Em seguida, você pode usar um link privado configurado no Azure Functions webhook implantado em sua rede virtual para efetuar pull de eventos. Consulte o tutorial: conectar-se a pontos de extremidade privados com Azure Functions.

Nessa configuração, o tráfego passa pelo IP público/Internet da Grade de Eventos para os Hubs de Eventos, o Barramento de Serviço ou o Armazenamento do Microsoft Azure, mas o canal pode ser criptografado e uma identidade gerenciada da Grade de Eventos é usada. Se você configurar seu Azure Functions ou webhook implantado em sua rede virtual para usar um Hubs de Eventos, o Barramento de Serviço ou o Armazenamento do Microsoft Azure por meio de link privado, essa seção do tráfego ficará evidentemente dentro do Azure.

Próximas etapas

Para saber mais sobre identidades gerenciadas, confira O que são identidades gerenciadas para recursos do Azure?.