Share via


Migrar um aplicativo para usar conexões sem senha com Hubs de Eventos do Azure

As solicitações de aplicativos para serviços do Azure devem ser autenticadas usando configurações, como 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. Os métodos de autenticação tradicionais que usam senhas ou chaves secretas criam riscos e complicações de segurança. Visite as conexões sem senha para o hub de serviços do Azure para saber mais sobre as vantagens de mudar para conexões sem senha.

O tutorial a seguir explica como migrar um aplicativo existente para se conectar usando 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.

Configure seu ambiente de desenvolvimento local

As conexões sem senha podem ser configuradas para funcionar em ambientes locais e hospedados no Azure. Nesta seção, você aplica configurações para permitir que usuários individuais se autentiquem nos Hubs de Eventos do Azure para desenvolvimento local.

Atribuir funções de utilizador

Ao desenvolver localmente, verifique se a conta de usuário que está acessando os Hubs de Eventos do Azure tem as permissões corretas. Você precisará das funções Recetor de Dados dos Hubs de Eventos do Azure e Remetente de Dados dos Hubs de Eventos do Azure para ler e gravar dados de mensagens. Para atribuir essa função a si mesmo, você precisará receber a função de Administrador de Acesso de Usuário ou outra função que inclua a ação Microsoft.Authorization/roleAssignments/write . Você pode atribuir funções do 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 dos Hubs de Eventos do Azure e Recetor de Dados dos 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.

  1. No portal do Azure, localize seu hub de eventos usando a barra de pesquisa principal ou a navegação à esquerda.

  2. Na página de visão geral do hub de eventos, selecione Controle de acesso (IAM) no menu à esquerda.

  3. Na página Controle de acesso (IAM), selecione a guia Atribuições de função.

  4. Selecione + Adicionar no menu superior e, em seguida, Adicionar atribuição de função no menu suspenso resultante.

    Uma captura de tela mostrando como atribuir uma função.

  5. Use a caixa de pesquisa para filtrar os resultados para a função desejada. Neste exemplo, procure Remetente de Dados dos Hubs de Eventos do Azure, selecione o resultado correspondente e escolha Avançar.

  6. Em Atribuir acesso a, selecione Utilizador, grupo ou entidade de serviço e, em seguida, selecione + Selecionar membros.

  7. Na caixa de diálogo, procure seu nome de usuário do Microsoft Entra (geralmente seu endereço de e-mail user@domain ) e escolha Selecionar na parte inferior da caixa de diálogo.

  8. Selecione Rever + atribuir para ir para a página final e, em seguida , Rever + atribuir novamente para concluir o processo.

  9. Repita estas etapas para a função Recetor de Dados dos 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 que a atribuição de função se propague no Azure, mas, em casos raros, pode levar até oito minutos. Se você receber erros de autenticação quando executar o código pela primeira vez, aguarde alguns momentos e tente novamente.

Entrar no Azure localmente

Para desenvolvimento local, certifique-se de que está autenticado com a mesma conta do Microsoft Entra à qual atribuiu a função. 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

Atualize o código do aplicativo para usar conexões sem senha

A biblioteca de cliente do Azure Identity, para cada um dos seguintes ecossistemas, fornece uma DefaultAzureCredential classe que lida com a autenticação sem senha para o Azure:

DefaultAzureCredential Suporta vários métodos de autenticação. O método a ser usado é determinado em tempo de execução. Essa abordagem permite que seu aplicativo use métodos de autenticação diferentes em ambientes diferentes (local versus produção) sem implementar código específico do ambiente. Consulte os links anteriores para a ordem e os locais em que DefaultAzureCredential procura credenciais.

  1. Para usar DefaultAzureCredential em um aplicativo .NET, instale o Azure.Identity pacote:

    dotnet add package Azure.Identity
    
  2. Na parte superior do ficheiro, adicione o seguinte código:

    using Azure.Identity;
    
  3. Identifique os locais em seu código que criam um EventHubProducerClient ou EventProcessorClient objeto para se conectar aos Hubs de Eventos do Azure. Atualize seu código para corresponder ao exemplo a seguir:

    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);
    
  1. Certifique-se de atualizar o namespace de hubs de eventos no URI de seus EventHubProducerClient objetos ou EventProcessorClient . Você pode encontrar o nome do namespace na página de visão geral do portal do Azure.

    Captura de tela mostrando como localizar o nome do namespace.

Executar a aplicação localmente

Depois de fazer essas alterações de código, execute seu aplicativo localmente. A nova configuração deve pegar suas credenciais locais, como a CLI do Azure, Visual Studio ou 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 seu 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 aos Hubs de Eventos do Azure usando uma identidade gerenciada. As identidades geridas proporcionam uma identidade gerida automaticamente no Microsoft Entra ID para as aplicações utilizarem quando se ligam a recursos que suportam a autenticação do Microsoft Entra. Saiba mais sobre 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 autenticar em outros serviços.

  1. Na parte superior do portal do Azure, procure identidades gerenciadas. Selecione o resultado Identidades gerenciadas.
  2. Selecione + Criar na parte superior da página de visão geral de Identidades Gerenciadas .
  3. Na guia Noçõ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 perto da sua localização.
    • Nome: insira um nome reconhecível para sua identidade, como MigrationIdentity.
  4. Selecione Rever + criar na parte inferior da página.
  5. Quando as verificações de validação terminarem, 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.

Uma captura de tela mostrando como criar uma identidade gerenciada atribuída ao usuário.

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. Estas mesmas etapas se aplicam aos seguintes serviços do Azure:

  • Azure Spring Apps
  • Azure Container Apps
  • Máquinas virtuais do Azure
  • Azure Kubernetes Service
  1. Navegue até a página de visão geral do seu aplicativo Web.

  2. Selecione Identidade na navegação à esquerda.

  3. Na página Identidade, alterne para a guia Usuário atribuído.

  4. Selecione + Adicionar para abrir o submenu Adicionar identidade gerenciada atribuída ao usuário.

  5. Selecione a assinatura usada anteriormente para criar a identidade.

  6. Procure a MigrationIdentity pelo nome e selecione-a nos resultados da pesquisa.

  7. Selecione Adicionar para associar a identidade ao seu aplicativo.

    Captura de ecrã a mostrar como criar uma identidade atribuída ao utilizador.

Atribuir funções à identidade gerenciada

Em seguida, você precisa conceder permissões à identidade gerenciada criada para acessar seu hub de eventos. Conceda permissões atribuindo uma função à identidade gerenciada, assim como fez com seu usuário de desenvolvimento local.

  1. Navegue até a página de visão geral do hub de eventos e selecione Controle de acesso (IAM) na navegação à esquerda.

  2. Escolha Adicionar atribuição de função

    Captura de tela mostrando como adicionar uma função a uma identidade gerenciada.

  3. Na caixa Pesquisa de função, procure 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.

  4. Na tela Adicionar atribuição de função, para a opção Atribuir acesso a, selecione Identidade gerenciada. Em seguida, escolha +Selecionar membros.

  5. No submenu, procure a identidade gerenciada criada pelo nome e selecione-a nos resultados. Escolha Selecionar para fechar o menu suspenso.

    Captura de ecrã a mostrar como selecionar a identidade gerida atribuída.

  6. Selecione Avançar algumas vezes até conseguir selecionar Revisar + atribuir para concluir a atribuição de função.

  7. Repita estas etapas para a função Recetor de Dados do Hub de Eventos do Azure.

Atualizar o código do aplicativo

Você precisa configurar o código do aplicativo para procurar a identidade gerenciada específica que você criou quando ele é implantado no Azure. Em alguns cenários, definir explicitamente a identidade gerenciada para o aplicativo também impede que outras identidades de ambiente sejam acidentalmente detetadas e usadas automaticamente.

  1. Na página de visão geral da identidade gerenciada, copie o valor da ID do cliente para a área de transferência.

  2. Aplique as seguintes alterações específicas do idioma:

    Crie um DefaultAzureCredentialOptions objeto e passe-o para DefaultAzureCredential. Defina a propriedade ManagedIdentityClientId como a ID do cliente.

    DefaultAzureCredential credential = new(
        new DefaultAzureCredentialOptions
        {
            ManagedIdentityClientId = managedIdentityClientId
        });
    
  3. Reimplante seu código no Azure depois de fazer essa alteração para que as atualizações de configuração sejam aplicadas.

Testar a aplicação

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 seu ambiente do Azure. Seu aplicativo agora está configurado para ser executado localmente e em um ambiente de produção sem que os desenvolvedores tenham que gerenciar segredos no próprio aplicativo.

Próximos passos

Neste tutorial, você aprendeu como migrar um aplicativo para conexões sem senha.

Você pode ler os seguintes recursos para explorar os conceitos discutidos neste artigo com mais profundidade: