Autenticação de identidade gerenciada para Hubs de Eventos do Azure

Uma identidade gerenciada é uma identidade no Microsoft Entra ID que o Azure gerencia para você, para que um aplicativo possa autenticar serviços que suportam autenticação Microsoft Entra sem armazenar credenciais. O Hubs de Eventos do Azure suporta autenticação Microsoft Entra com identidades gerenciadas para recursos do Azure, o que permite que aplicações rodando no Azure conectem aos Event Hubs sem incorporar strings de conexão ou chaves de acesso no código ou configuração.

Quando você usa uma identidade gerenciada junto com autenticação Microsoft Entra, aplicações rodando em serviços como Máquinas Virtuais do Azure, Azure Functions, Serviço de Aplicativo do Azure e Conjuntos de Dimensionamento de Máquinas Virtuais pode acessar dados dos Hubs de Eventos com credenciais que o Azure provisiona e rotaciona automaticamente. Essa abordagem elimina o risco de vazamento de chaves e reduz a sobrecarga operacional da gestão de credenciais.

Para um exemplo passo a passo, veja Access Hubs de Eventos do Azure a partir de uma VM usando uma identidade gerenciada.

Como funciona a autenticação de identidade gerenciada

O acesso a um recurso de Event Hubs por meio de uma identidade gerenciada é um processo em duas etapas:

  • Autenticação: A identidade gerenciada solicita um token OAuth 2.0 do Microsoft Entra ID. O Azure fornece a identidade automaticamente com base no ambiente de computação onde o código é executado, então nenhum segredo é armazenado ou passado na aplicação.
  • Autorização: O token é apresentado ao serviço Event Hubs, que concede acesso com base nos papéis de controle de acesso baseado em funções (RBAC) do Azure atribuídos à identidade.

Para uma descrição completa do fluxo de autenticação e autorização, veja Autorizar acesso aos recursos do Hubs de Eventos do Azure usando o Microsoft Entra ID.

Tipos de identidade gerenciada

O Event Hubs funciona com ambos os tipos de identidades gerenciadas:

  • Identidade gerenciada atribuída ao sistema: Ativada diretamente em um recurso Azure, como uma máquina virtual ou um aplicativo de Serviços de Aplicativos. Seu ciclo de vida está atrelado a esse recurso, e somente esse recurso pode usá-lo para solicitar tokens.
  • Identidade gerenciada atribuída pelo usuário: Criada como um recurso Azure independente e atribuída a um ou mais recursos do Azure, para que múltiplas cargas de trabalho possam compartilhar a mesma identidade.

Para saber mais sobre os dois tipos e quando escolher cada um, veja Tipos de identidade gerenciados. Para a lista de serviços que suportam identidades gerenciadas, veja Serviços que suportam identidades gerenciadas para recursos do Azure.

Funções internas do Azure para o Event Hubs

Depois de ativar uma identidade gerenciada, atribua a ele uma função integrada no Azure que define suas permissões sobre os dados do Event Hubs. O Azure oferece as seguintes funções integradas para autorizar o acesso a dados de Hubs de Eventos com o Microsoft Entra ID:

Função Description
Proprietário de dados dos Hubs de Eventos do Azure Concede acesso total aos recursos do Event Hubs.
Emissor de Dados dos Hubs de Eventos do Azure Concede permissão para enviar eventos para os recursos do Event Hubs.
Receptor de dados dos Hubs de Eventos do Azure Concede permissão para receber eventos dos recursos do Event Hubs.

Você pode atribuir uma função no nível de um grupo de consumidores, hub de eventos, namespace, grupo de recursos ou assinatura. Conceda o escopo mais restrito que atenda às necessidades da aplicação. Para a lista completa de escopos e detalhes das funções, consulte Funções internas do Azure para o Hubs de Eventos do Azure. Para atribuir uma função no portal Azure, veja Atribuir funções no Azure usando o portal Azure.

Comportamento de expiração de tokens

Quando você remove uma identidade gerenciada de um papel RBAC em Event Hubs, a mudança não entra em vigor imediatamente para uma aplicação em execução. Se o serviço de origem ou o aplicativo não reiniciar, ele pode continuar enviando eventos ou recebendo eventos do hub de eventos até que o token expire. A validade padrão do token é de 24 horas. Este comportamento ocorre por design.

Para revogar o acesso imediatamente após remover a identidade da função, reinicie o aplicativo ou serviço de origem para que o token existente expire.

Suporte ao SDK do cliente

As bibliotecas de cliente do SDK do Azure obtêm para você o token da identidade gerenciada por meio de DefaultAzureCredential, que detecta automaticamente a identidade gerenciada disponível no ambiente de hospedagem. Você passa a credencial para EventHubProducerClient para enviar eventos e para EventHubConsumerClient para receber eventos, sem fornecer uma cadeia de conexão ou chave.

var credential = new DefaultAzureCredential();

// Send events with a managed identity.
var producerClient = new EventHubProducerClient(
    "<namespace>.servicebus.windows.net",
    "<event-hub-name>",
    credential);

// Receive events with a managed identity.
var consumerClient = new EventHubConsumerClient(
    EventHubConsumerClient.DefaultConsumerGroupName,
    "<namespace>.servicebus.windows.net",
    "<event-hub-name>",
    credential);

Instale o pacote Azure.Messaging.EventHubs mais recente do NuGet para usar estes clientes. Para amostras executáveis, veja:

Hubs de Eventos para Apache Kafka

Aplicações Apache Kafka podem enviar eventos para e receber eventos do Hubs de Eventos do Azure usando identidade gerenciada com OAuth. Para um exemplo de Java, veja Event Hubs for Kafka: enviar e receber mensagens usando identidade gerenciada OAuth.