Autenticação com identidade gerida para o Hubs de Eventos do Azure

Uma identidade gerida é uma identidade no Microsoft Entra ID que o Azure gere por si, para que uma aplicação possa autenticar-se em serviços que suportam autenticação Microsoft Entra sem armazenar quaisquer credenciais. O Hubs de Eventos do Azure suporta autenticação Microsoft Entra com identidades geridas para recursos Azure, o que permite que aplicações a correr no Azure se liguem aos Event Hubs sem incorporar strings de ligação ou chaves de acesso no código ou configuração.

Quando utiliza uma identidade gerida juntamente com a autenticação do Microsoft Entra, as aplicações em execução em serviços como o Máquinas Virtuais do Azure, o Funções do Azure, o Serviço de Aplicações do Azure e o Conjuntos de Dimensionamento de Máquinas Virtuais podem aceder a dados do Event Hubs com credenciais que o Azure aprovisiona e renova automaticamente. Esta abordagem elimina o risco de chaves vazadas 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 gerida.

Como funciona a autenticação de identidade gerida

O acesso a um recurso de Event Hubs através de uma identidade gerida é um processo em dois passos:

  • Autenticação: A identidade gerida solicita um token OAuth 2.0 ao Microsoft Entra ID. O Azure fornece automaticamente a identidade com base no ambiente de computação onde o código é executado, pelo que 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 controlo 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, consulte Autorizar acesso aos recursos do Hubs de Eventos do Azure usando o Microsoft Entra ID.

Tipos de identidade gerenciados

O Event Hubs trabalha com ambos os tipos de identidades geridas:

  • Identidade gerida atribuída ao sistema: Ativada diretamente num recurso Azure, como uma máquina virtual ou uma aplicação de Serviços de Aplicações. O seu ciclo de vida está ligado a esse recurso, e só esse recurso pode usá-lo para pedir tokens.
  • Identidade gerida atribuída pelo utilizador: Criada como um recurso Azure autónomo e atribuída a um ou mais recursos Azure, para que múltiplas cargas de trabalho possam partilhar a mesma identidade.

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

Funções incorporadas do Azure para Event Hubs

Depois de ativares uma identidade gerida, atribui-lhe um papel incorporado no Azure que defina as suas permissões sobre os dados do Event Hubs. O Azure fornece as seguintes funções incorporadas para autorizar o acesso a dados dos Event Hubs com o Microsoft Entra ID:

Role Description
Proprietário de Dados dos Hubs de Eventos do Azure Concede acesso total aos recursos do Event Hubs.
Remetente de Dados do Hubs de Eventos do Azure Concede permissão para enviar eventos para os recursos do Event Hubs.
Receptor de Dados do Hubs de Eventos do Azure Concede permissão para receber eventos através dos recursos do Event Hubs.

Pode atribuir um papel ao nível de um grupo de consumidores, hub de eventos, namespace, grupo de recursos ou subscrição. Conceda o âmbito mais restrito que satisfaça as necessidades da candidatura. Para a lista completa de âmbitos e detalhes de funções, consulte funções incorporadas no Azure para Hubs de Eventos do Azure. Para atribuir uma função no portal Azure, consulte Atribuir papéis Azure usando o portal Azure.

Comportamento de expiração do token

Quando remove uma identidade gerida de uma função RBAC do Event Hubs, a alteração não produz efeitos imediatamente numa aplicação em execução. Se o serviço de origem ou a aplicação não reiniciar, pode continuar a enviar ou receber eventos do hub de eventos até o token expirar. A validade padrão do token é de 24 horas. Este comportamento é intencional.

Para revogar o acesso imediatamente após remover a identidade do cargo, reinicie a aplicação 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 por si o token de identidade gerida através de DefaultAzureCredential, que deteta automaticamente a identidade gerida disponível no ambiente de alojamento. Passa a credencial para EventHubProducerClient para enviar eventos e a EventHubConsumerClient para receber eventos, sem fornecer uma cadeia de ligação nem uma 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 a partir do NuGet para utilizar estes clientes. Para amostras executáveis, veja:

Centros de Eventos para Apache Kafka

As aplicações Apache Kafka podem enviar eventos para e receber eventos do Hubs de Eventos do Azure usando identidade gerida com OAuth. Para um exemplo de Java, veja Event Hubs for Kafka: send and receive messages using managed identity OAuth.