Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
- Uma conta do Azure com uma assinatura ativa. Se ainda não tiver uma, crie uma conta gratuita.
- Um espaço de nomes do Event Hubs e um concentrador de eventos. Para os criar, consulte Quickstart: Criar um hub de eventos usando o portal do Azure.
- Uma máquina virtual do Azure. Para criar uma, consulte Quickstart: Criar uma VM Windows no portal Azure ou Quickstart: Criar uma VM Linux no portal Azure.
- Permissão para atribuir papéis no Azure no âmbito alvo. O papel de Proprietário ou Administrador de Acesso ao Utilizador inclui esta permissão.
- O SDK .NET instalado na VM para construir e executar a aplicação de exemplo.
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.
Inicie sessão no portal Azure.
Vá para a sua máquina virtual.
Na página da VM, selecione Identidade de Segurança> no menu esquerdo.
Na página Identidade, confirme que está no separador Atribuído pelo sistema.
Para o campo Estado , selecione Ligado.
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.
- No portal Azure, vai ao teu hub de eventos.
- Na página do hub de eventos, selecione Controlo de Acesso (IAM) no menu esquerdo.
- Selecione Adicionar>Adicionar atribuição de função.
- No separador Funções, selecione Hubs de Eventos do Azure Data Sender e depois selecione Próximo.
- Na guia Membros , para Atribuir acesso a, selecione Identidade gerenciada.
- Selecione + Selecionar membros, escolha a identidade gerida de Máquina virtual que ativou na secção anterior e, em seguida, selecione Selecionar.
- 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.
Liga-te à VM. Para uma VM Windows, use o Ambiente de Trabalho Remoto. Para uma VM Linux, usa SSH.
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.IdentitySubstitua o conteúdo de
Program.cspelo 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.");Construa e execute a aplicação na VM:
dotnet runA 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.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.