Migrar um aplicativo para usar conexões sem senha com o Hubs de Eventos do Azure
As solicitações de aplicativo para os Serviços do Azure devem ser autenticadas por meio de chaves de acesso de conta ou conexões sem senha. No entanto, você deve priorizar conexões sem senha em seus aplicativos quando possível. Métodos de autenticação tradicionais que usam senhas ou chaves secretas criam riscos e complicações de segurança. Visite as de conexões sem senha para os serviços do Azure para saber mais sobre as vantagens de migrar para conexões sem senha.
O tutorial a seguir explica como migrar um aplicativo existente para se conectar por meio de conexões sem senha. Essas mesmas etapas de migração devem ser aplicadas se você estiver usando chaves de acesso, cadeias de conexão ou outra abordagem baseada em segredos.
Configurar seu ambiente de desenvolvimento
As conexões sem senha podem ser configuradas para funcionar em ambientes locais e hospedados no Azure. Nesta seção, você aplica as configurações para permitir que usuários individuais se autentiquem nos Hubs de Eventos do Azure para desenvolvimento local.
Atribuir funções de usuário
Ao desenvolver localmente, certifique-se de que a conta de usuário que está acessando os Hubs de Eventos do Azure tenha as permissões corretas. Você precisará das funções Receptor de Dados do Hubs de Eventos do Azure e Remetente de Dados do Hubs de Eventos do Azure para ler e gravar dados de mensagens. Para atribuir essa função a si mesmo, você precisará receber a atribuição da função Administrador de Acesso do Usuário ou de outra função que inclua a ação Microsoft.Authorization/roleAssignments/write. É possível atribuir funções RBAC do Azure a um usuário usando o portal do Azure, a CLI do Azure ou o Azure PowerShell. Saiba mais sobre os escopos disponíveis para atribuições de função na página de visão geral do escopo.
O exemplo a seguir atribui as funções Remetente de Dados do Hubs de Eventos do Azure e Receptor de Dados do Hubs de Eventos do Azure à sua conta de usuário. Essa função concede acesso de leitura e gravação a mensagens do hub de eventos.
No portal do Azure, localize seu hub de eventos usando a barra de pesquisa principal ou a navegação à esquerda.
Na página de visão geral do hub de eventos, selecione Controle de acesso (IAM) no menu à esquerda.
Na página Controle de acesso (IAM), selecione a guia Atribuições de função.
Selecione + Adicionar no menu superior e, em seguida, Adicionar atribuição de função no menu suspenso resultante.
Use a caixa de pesquisa para filtrar os resultados para a função desejada. Para este exemplo, pesquise o Remetente de Dados do Hubs de Eventos do Azure e selecione o resultado correspondente e, em seguida, escolha Avançar.
Em Atribuir acesso a, selecione Usuário, grupo ou entidade de serviço e, em seguida, selecione + Selecionar membros.
No diálogo, pesquise seu nome de usuário do Microsoft Entra (geralmente seu endereço de email user@domain) e escolha Selecionar na parte inferior do diálogo.
Selecione Revisar + atribuir para ir para a página final e, em seguida, Revisar + atribuir novamente para concluir o processo.
Repita essas etapas para a função Receptor de Dados do Hubs de Eventos do Azure para permitir que a conta envie e receba mensagens.
Importante
Na maioria dos casos, levará um ou dois minutos para a atribuição de função se propagar no Azure, mas em casos raros pode levar até oito minutos. Se você receber erros de autenticação ao executar o código pela primeira vez, aguarde alguns instantes e tente novamente.
Entrar no Azure localmente
Para desenvolvimento local, você deve estar autenticado com a mesma conta do Microsoft Entra à qual a função foi atribuída. Você pode autenticar por meio de ferramentas de desenvolvimento populares, como a CLI do Azure ou o Azure PowerShell. As ferramentas de desenvolvimento com as quais você pode autenticar variam entre os idiomas.
Entre no Azure por meio da CLI do Azure usando o seguinte comando:
az login
Atualizar o código do aplicativo para usar conexões sem senha
A biblioteca de clientes da Identidade do Azure, para cada um dos ecossistemas a seguir, fornece uma classe DefaultAzureCredential
que lida com a autenticação sem senha no Azure:
DefaultAzureCredential
oferece suporte a vários métodos de autenticação. O método a ser usado é determinado em runtime. Essa abordagem permite que seu aplicativo use diferentes métodos de autenticação em ambientes diferentes (local versus produção) sem implementar código específico do ambiente. Confira os links anteriores para o pedido e os locais em que DefaultAzureCredential
procura credenciais.
Para usar
DefaultAzureCredential
em um aplicativo .NET, instale o pacoteAzure.Identity
:dotnet add package Azure.Identity
Na parte superior do seu arquivo, adicione o código a seguir:
using Azure.Identity;
Identifique as localizações em seu código que criam um objeto
EventHubProducerClient
ouEventProcessorClient
para se conectar ao Hubs de Eventos do Azure. Atualize o código para que ele corresponda ao seguinte exemplo:DefaultAzureCredential credential = new(); var eventHubNamespace = $"https://{namespace}.servicebus.windows.net"; // Event Hubs producer EventHubProducerClient producerClient = new( eventHubNamespace, eventHubName, credential); // Event Hubs processor EventProcessorClient processorClient = new( storageClient, EventHubConsumerClient.DefaultConsumerGroupName, eventHubNamespace, eventHubName, credential);
Certifique-se de atualizar o namespace do hub de eventos no URI dos seus objetos
EventHubProducerClient
ouEventProcessorClient
. É possível encontrar o namespace na página de visão geral do portal do Azure.
Executar o aplicativo localmente
Depois de fazer essas alterações de código, execute seu aplicativo localmente. A nova configuração deve selecionar suas credenciais locais, como a CLI do Azure, o Visual Studio ou o IntelliJ. As funções atribuídas ao usuário no Azure permitem que seu aplicativo se conecte ao serviço do Azure localmente.
Configurar o ambiente de hospedagem do Azure
Depois que o aplicativo estiver configurado para usar conexões sem senha e for executado localmente, o mesmo código poderá ser autenticado nos serviços do Azure depois de implantado no Azure. As seções a seguir explicam como configurar um aplicativo implantado para se conectar ao Hubs de Eventos do Azure usando uma identidade gerenciada. As identidades gerenciadas fornecem uma identidade automaticamente gerenciada no Microsoft Entra ID para os aplicativos usarem ao se conectarem a recursos que dão suporte à autenticação do Microsoft Entra. Saiba mais sobre as identidades gerenciadas:
Criar a identidade gerenciada
Você pode criar uma identidade gerenciada atribuída pelo usuário usando o portal do Azure ou a CLI do Azure. Seu aplicativo usa a identidade para se autenticar em outros serviços.
- Na parte superior do portal do Azure, pesquise Identidades gerenciadas. Selecione o resultado Identidades gerenciadas.
- Selecione + Criar na parte superior da página de visão geral de Identidades gerenciadas.
- Na guia Informações Básicas, insira os seguintes valores:
- Assinatura: selecione a assinatura desejada.
- Grupo de recursos: selecione o grupo de recursos desejado.
- Região: selecione uma região próxima à sua localização.
- Nome: insira um nome reconhecível para sua identidade, como MigrationIdentity.
- Selecione Revisar + criar na parte inferior da página.
- Quando as verificações de validação forem concluídas, selecione Criar. O Azure cria uma nova identidade atribuída pelo usuário.
Depois que o recurso for criado, selecione Ir para o recurso para exibir os detalhes da identidade gerenciada.
Associar a identidade gerenciada ao seu aplicativo Web
Você precisa configurar seu aplicativo Web para usar a identidade gerenciada que você criou. Atribua a identidade ao seu aplicativo usando o portal do Azure ou a CLI do Azure.
Conclua as etapas a seguir no portal do Azure para associar uma identidade ao seu aplicativo. Essas mesmas etapas se aplicam aos seguintes serviços do Azure:
- Azure Spring Apps
- Aplicativos de Contêiner do Azure
- Máquinas Virtuais do Azure
- Serviço de Kubernetes do Azure
Navegue até a página de visão geral do seu aplicativo Web.
Selecione Identidade no painel de navegação esquerdo.
Na página Identidade, alterne para a guia Atribuída pelo usuário.
Selecione + Adicionar para abrir o submenu Adicionar identidade gerenciada atribuída pelo usuário.
Selecione a assinatura que você usou anteriormente para criar a identidade.
Pesquise a MigrationIdentity pelo nome e selecione-a nos resultados da pesquisa.
Selecione Adicionar para associar a identidade ao seu aplicativo.
Atribuir funções à identidade gerenciada
Em seguida, você precisa conceder permissões à identidade gerenciada criada para acessar o seu hub de eventos. Conceda permissões atribuindo uma função à identidade gerenciada, assim como fez com o usuário de desenvolvimento local.
Navegue até a página de visão geral do hub de eventos e selecione Controle de Acesso (IAM) na navegação à esquerda.
Escolha Adicionar atribuição de função.
Na caixa de pesquisa Função, pesquise por Remetente de Dados dos Hubs de Eventos do Azure, que é uma função comum usada para gerenciar operações de dados para filas. Você pode atribuir qualquer função apropriada para seu caso de uso. Selecione o Remetente de Dados dos Hubs de Eventos do Azure na lista e escolha Avançar.
Na tela Adicionar atribuição de função, para a opção Atribuir acesso à, selecione Identidade gerenciada. Em seguida, escolha +Selecionar membros.
No submenu, pesquise pelo nome a identidade gerenciada que você criou e selecione-a nos resultados. Escolha Selecionar para fechar o submenu.
Selecione Avançar algumas vezes até que você possa selecionar Revisão + atribuir para concluir a atribuição de função.
Repita estas etapas para a função Receptor de Dados do Hub de Eventos do Azure.
Atualize o código do aplicativo
Você precisa configurar o código do aplicativo para procurar a identidade gerenciada específica que você criou quando ela for implantada no Azure. Em alguns cenários, definir explicitamente a identidade gerenciada para o aplicativo também impede que outras identidades de ambiente sejam detectadas acidentalmente e usadas automaticamente.
Na página de visão geral da identidade gerenciada, copie o valor da ID do cliente para a área de transferência.
Aplicar as seguintes alterações específicas do idioma:
Crie um objeto
DefaultAzureCredentialOptions
e passe-o paraDefaultAzureCredential
. Defina a propriedade ManagedIdentityClientId como ID do cliente.DefaultAzureCredential credential = new( new DefaultAzureCredentialOptions { ManagedIdentityClientId = managedIdentityClientId });
Reimplante seu código no Azure depois de fazer essa alteração para que as atualizações de configuração sejam aplicadas.
Testar o aplicativo
Depois de implantar o código atualizado, navegue até o aplicativo hospedado no navegador. Seu aplicativo deve ser capaz de se conectar ao hub de eventos com êxito. Lembre-se de que pode levar vários minutos para que as atribuições de função se propaguem pelo ambiente do Azure. Seu aplicativo agora está configurado para ser executado localmente e em um ambiente de produção sem que os desenvolvedores precisem gerenciar segredos no próprio aplicativo.
Próximas etapas
Neste tutorial, você aprendeu a migrar um aplicativo para conexões sem senha.
Você pode ler os seguintes recursos para explorar os conceitos discutidos neste artigo com mais detalhes:
- Conexões sem senha para serviços do Azure
- Para saber mais sobre .NET, confira Introdução ao .NET em 10 minutos.