Usar identidades gerenciadas para entregar eventos na Grade de Eventos do Azure

Este artigo explica como habilitar identidades de serviço gerenciadas para tópicos do sistema da Grade de Eventos do Azure, tópicos personalizados e domínios. Também explica como usar identidades gerenciadas para entregar eventos a destinos compatíveis, como filas e tópicos do Barramento de Serviço, Event Hubs e contas de armazenamento.

Pré-requisitos

  1. Atribua uma identidade atribuída pelo sistema ou identidade atribuída pelo usuário a um tópico do sistema, tópico personalizado ou 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, você não pode entregar eventos usando endpoints privados. Para obter mais informações, confira a seção Pontos de extremidade privados no final deste tutorial.

Crie assinaturas de eventos que utilizem uma identidade

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

Use o portal do Azure

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

Este exemplo mostra como habilitar uma identidade atribuída pelo sistema ao criar uma assinatura de evento usando uma fila do Barramento de Serviço como destino.

Captura de tela de ativar uma identidade atribuída ao sistema para uma assinatura de fila do Barramento de Serviço.

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

Captura de tela da habilitação de uma identidade atribuída pelo sistema para mensagens mortas.

Habilite 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 mensagens mortas nesta página.

Captura de tela da habilitação de uma identidade atribuída pelo sistema em uma assinatura de evento existente.

Se você habilitar 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 de Tipo de identidade gerenciada. Se você selecionar Usuário Atribuído para Tipo de Identidade Gerenciada, poderá selecionar a identidade atribuída pelo usuário que deseja usar para entregar eventos.

Captura de tela da habilitação de uma identidade atribuída pelo usuário em uma assinatura de evento.

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

Nesta seção, você aprende como usar a CLI do Azure para habilitar uma identidade atribuída ao sistema que entregue eventos em uma fila do Barramento de Serviço. A identidade deve ser membro da função Remetente de Dados do Barramento de Serviço do Azure e da função Colaborador de dados de blob de armazenamento na conta de armazenamento usada nas mensagens mortas.

Definir variáveis

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

Esse comando cria uma assinatura de evento para um tópico personalizado do Event Grid com o tipo de endpoint 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. Também especifica que o Event Grid usa a identidade gerenciada atribuída pelo sistema para o envio de 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_esname

Usar a CLI do Azure – Hubs de Eventos

Nesta seção, você aprende como usar a CLI do Azure para habilitar uma identidade atribuída ao sistema que entregue eventos para 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 subscrição de evento para um tópico personalizado do Event Grid com um tipo de ponto de extremidade definido como 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

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

Este comando de exemplo cria uma subscrição de evento para um tópico personalizado do Event Grid com um tipo de ponto de extremidade definido como Event Hubs. Ele também especifica que a identidade gerenciada atribuída pelo sistema lida com 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 eventhub \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $hubid \
    --deadletter-identity-endpoint $deadletterendpoint \
    --deadletter-identity systemassigned \
    -n $eh_esname

Usar a CLI do Azure – Fila de Armazenamento do Azure

Nesta seção, você aprende como usar a CLI do Azure para habilitar uma identidade atribuída ao sistema que entregue eventos para uma fila do 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 e 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, você não pode entregar eventos usando endpoints privados. Ou seja, não haverá suporte se você tiver requisitos de isolamento de rede estritos em que o tráfego de eventos entregues não deve deixar o espaço IP privado.

No entanto, se suas necessidades exigem uma forma 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ê pode entregar eventos para Event Hubs, Barramento de Serviço ou serviço Armazenamento do Azure usando um tópico personalizado do Grade de Eventos do Azure ou um domínio com identidade gerenciada, como mostrado neste artigo. Em seguida, você pode usar um link privado configurado no Azure Functions ou um webhook implantado na sua rede virtual para coletar eventos. Confira o tutorial: Conectar a endpoints privados usando Azure Functions.

Nessa configuração, o tráfego passa pelo IP/internet público do Event Grid para Event Hubs, Barramento de Serviço ou Armazenamento do Azure, mas você pode criptografar o canal e usar uma identidade gerenciada chamada Event Grid. Se você configurar o Azure Functions ou um webhook implantado em sua rede virtual para usar Hubs de Eventos, Barramento de Serviço ou Armazenamento do Azure por meio de link privado, essa seção do tráfego permanecerá no Azure.

Para saber mais sobre identidades gerenciadas, confira quais são as identidades gerenciadas para recursos do Azure.