Acede ao Hubs de Eventos do Azure a partir de uma VM usando uma identidade gerida

Este artigo mostra-lhe como se ligar ao Hubs de Eventos do Azure a partir de uma aplicação que corre numa máquina virtual (VM) do Azure, utilizando uma identidade gerida. Quando usa uma identidade gerida, a sua aplicação autentica-se nos Event Hubs sem armazenar strings de ligação ou chaves de acesso no código ou configuração. O Azure aprovisiona e faz a rotação das credenciais automaticamente.

Neste artigo, você conclui as seguintes tarefas:

  • Ative uma identidade gerida atribuída pelo sistema numa VM.
  • Conceda à identidade gerida permissão para enviar eventos para um hub de eventos.
  • Crie e execute uma aplicação de exemplo na VM que use a identidade gerida.

Para saber como funciona a autenticação de identidade gerida com os Event Hubs, consulte Autenticação de identidade gerida para Hubs de Eventos do Azure.

Pré-requisitos

Ativar uma identidade gerida na VM

Ative uma identidade gerida atribuída pelo sistema na VM. O Azure cria uma identidade no Microsoft Entra ID que está ligada ao ciclo de vida da VM.

  1. Inicie sessão no portal Azure.

  2. Vá para a sua máquina virtual.

  3. Na página da VM, selecione Identidade de Segurança> no menu esquerdo.

  4. Na página Identidade, confirme que está no separador Atribuído pelo sistema.

  5. Para o campo Estado , selecione Ligado.

  6. Seleciona Guardar na barra de comandos e depois seleciona Sim para confirmar.

    Depois de o Azure criar a identidade, o ID do Objeto (principal) aparece na página. Usa esta identidade na secção seguinte.

Para ativar uma identidade gerida atribuída pelo utilizador, veja Configurar identidades geridas para recursos Azure numa VM. Uma identidade atribuída pelo utilizador é um recurso autónomo que pode atribuir a mais do que uma VM.

Conceda à identidade gerida acesso ao Event Hubs

Atribui um papel incorporado no Azure à identidade gerida para que possa enviar eventos para o teu hub de eventos. Este exemplo atribui a função de Remetente de Dados dos Hubs de Eventos do Azure ao nível de um único hub de eventos. Conceda o âmbito mais restrito que satisfaça as necessidades da sua candidatura.

  1. No portal Azure, vai ao teu hub de eventos.
  2. Na página do hub de eventos, selecione Controlo de Acesso (IAM) no menu esquerdo.
  3. Selecione Adicionar>Adicionar atribuição de função.
  4. No separador Funções, selecione Hubs de Eventos do Azure Data Sender e depois selecione Próximo.
  5. Na guia Membros , para Atribuir acesso a, selecione Identidade gerenciada.
  6. Selecione + Selecionar membros, escolha a identidade gerida de Máquina virtual que ativou na secção anterior e, em seguida, selecione Selecionar.
  7. Selecione Rever + atribuir para concluir a atribuição de função.

Para obter a lista completa de funções e âmbitos, consulte funções incorporadas do Azure para o Hubs de Eventos do Azure. Para atribuir funções no portal Azure, consulte Atribuir papéis Azure usando o portal Azure.

Note

As atribuições de funções podem demorar alguns minutos a propagar-se. Se a sua candidatura não conseguir autenticação imediatamente, espere e tente novamente.

Crie e execute a aplicação de exemplo na VM

Crie uma aplicação de consola .NET que envie eventos para o seu hub de eventos. Quando a aplicação é executada na VM, DefaultAzureCredential deteta automaticamente a identidade gerida, por isso não tem de fornecer uma cadeia de ligação nem uma chave.

  1. Liga-te à VM. Para uma VM Windows, use o Ambiente de Trabalho Remoto. Para uma VM Linux, usa SSH.

  2. Num terminal na VM, crie um projeto e adicione os pacotes necessários:

    dotnet new console --name EventHubsManagedIdentitySample
    cd EventHubsManagedIdentitySample
    dotnet add package Azure.Messaging.EventHubs
    dotnet add package Azure.Identity
    
  3. Substitua o conteúdo de Program.cs pelo seguinte código. Substitua <namespace> pelo nome do namespace do seu Event Hub e <event-hub-name> pelo nome do seu event hub.

    using Azure.Identity;
    using Azure.Messaging.EventHubs;
    using Azure.Messaging.EventHubs.Producer;
    
    // DefaultAzureCredential detects the managed identity available on the VM.
    var credential = new DefaultAzureCredential();
    
    var producerClient = new EventHubProducerClient(
        "<namespace>.servicebus.windows.net",
        "<event-hub-name>",
        credential);
    
    using EventDataBatch eventBatch = await producerClient.CreateBatchAsync();
    eventBatch.TryAdd(new EventData("First event from a managed identity"));
    eventBatch.TryAdd(new EventData("Second event from a managed identity"));
    
    await producerClient.SendAsync(eventBatch);
    await producerClient.DisposeAsync();
    
    Console.WriteLine("Events sent to the event hub.");
    
  4. Construa e execute a aplicação na VM:

    dotnet run
    

    A aplicação utiliza a identidade gerida da VM para autenticar e enviar os eventos. Quando os eventos são enviados, a consola mostra Events sent to the event hub.

  5. Para confirmar que os eventos chegaram, use o Data Explorer no portal do Azure para o seu hub de eventos, ou as métricas na página de Visão Geral do namespace.

Tip

Quando usa uma identidade gerida atribuída pelo utilizador, ou quando há mais do que uma identidade disponível na VM, defina o ID do cliente para que selecione DefaultAzureCredential a identidade correta. Para mais informações, consulte DefaultAzureCredentialOptions.ManagedIdentityClientId.