Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
As conexões sem senha são um recurso independente de idioma que abrange vários serviços do Azure. Embora a documentação atual se concentre em alguns idiomas e serviços, estamos atualmente no processo de produção de documentação adicional para outros idiomas e serviços.
Este artigo descreve os desafios de segurança com senhas e apresenta conexões sem senha para serviços do Azure.
Desafios de segurança com senhas e segredos
Tenha cuidado ao lidar com senhas e chaves secretas. Nunca coloque-os em um local não seguro. Muitos aplicativos se conectam aos serviços de banco de dados de back-end, cache, mensagens e eventos usando nomes de usuário, senhas e chaves de acesso. Se expostos, os maus atores podem usar essas credenciais para obter acesso não autorizado a informações confidenciais, como um catálogo de vendas criado para uma campanha futura ou dados do cliente que devem ser privados.
A inserção de senhas em um aplicativo em si representa um enorme risco de segurança por muitos motivos, incluindo a descoberta por meio de um repositório de código. Muitos desenvolvedores externalizam essas senhas usando variáveis de ambiente para que os aplicativos possam carregá-las de ambientes diferentes. No entanto, essa abordagem apenas desloca o risco do próprio código para um ambiente de execução. Qualquer pessoa que obtém acesso ao ambiente pode roubar senhas, o que, por sua vez, aumenta o risco de exfiltração de dados.
O exemplo de código a seguir demonstra como se conectar a Armazenamento do Azure usando uma chave de conta de armazenamento. Muitos desenvolvedores gravitam em torno dessa solução porque ela parece familiar às opções com as quais trabalharam no passado, mesmo que não seja uma solução ideal. Se o aplicativo usa chaves de acesso no momento, considere migrar para conexões sem senha.
// Connection using secret access keys
BlobServiceClient blobServiceClient = new(
new Uri("https://<storage-account-name>.blob.core.windows.net"),
new StorageSharedKeyCredential("<storage-account-name>", "<your-access-key>"));
Os desenvolvedores devem ser diligentes para nunca expor esses tipos de chaves ou segredos em um local não seguro. Muitas empresas têm requisitos de segurança rígidos para se conectar aos serviços do Azure sem expor senhas a desenvolvedores, operadores ou qualquer outra pessoa. Geralmente usam um cofre para armazenar e carregar senhas em aplicativos e reduzir ainda mais o risco adicionando requisitos e procedimentos de rotação de senha. Essa abordagem, por sua vez, aumenta a complexidade operacional e, às vezes, leva a interrupções na conexão do aplicativo.
Conexões sem senha e Confiança Zero
Agora você pode usar conexões sem senha em seus aplicativos para se conectar a serviços baseados no Azure sem a necessidade de girar senhas. Em alguns casos, tudo o que você precisa é de configuração, nenhum novo código é necessário. O Confiança Zero usa o princípio de "nunca confie, sempre verifique e livre de credenciais". Esse princípio significa proteger todas as comunicações confiando em computadores ou usuários somente depois de verificar a identidade e antes de conceder-lhes acesso aos serviços de back-end.
A opção de autenticação recomendada para conexões seguras e sem senha é usar identidades gerenciadas e RBAC (controle de acesso baseado em função) do Azure em combinação. Usando essa abordagem, você não precisa controlar e gerenciar manualmente muitos segredos diferentes para identidades gerenciadas porque Azure manipula essas tarefas com segurança internamente.
Você pode configurar conexões sem senha para Azure serviços usando o Service Connector ou configurá-las manualmente. O Service Connector permite identidades gerenciadas em serviços de hospedagem de aplicativos, como Serviço de Aplicativo do Azure e Aplicativos de Contêiner do Azure. O Service Connector também configura serviços de back-end com conexões sem senha usando identidades gerenciadas e Azure RBAC e hidrata aplicativos com as informações de conexão necessárias.
Se você inspecionar o ambiente em execução de um aplicativo configurado para conexões sem senha, poderá ver a cadeia de conexão completa. A cadeia de conexão carrega, por exemplo, um endereço de servidor de banco de dados, um nome de banco de dados e uma instrução para delegar autenticação a um plug-in de autenticação do Azure, mas não contém senhas ou segredos.
O vídeo a seguir ilustra conexões sem senha de aplicativos para serviços do Azure, usando aplicativos Java como exemplo. Cobertura semelhante para outros idiomas está disponível.
Apresentando DefaultAzureCredential
Você pode usar DefaultAzureCredential das bibliotecas de cliente do Azure Identity para implementar conexões sem senha nos serviços do Azure por meio do Microsoft Entra ID e do controle de acesso baseado em função (RBAC).
Importante
Alguns idiomas exigem que você implemente DefaultAzureCredential explicitamente em seu código, enquanto outros usam DefaultAzureCredential internamente por meio de plug-ins ou drivers subjacentes.
DefaultAzureCredential dá suporte a vários métodos de autenticação e determina automaticamente qual método usar em runtime. Essa abordagem permite que seu aplicativo use diferentes métodos de autenticação em ambientes diferentes (desenvolvimento local versus produção) sem implementar código específico do ambiente.
A ordem e os locais em que DefaultAzureCredential procura credenciais variam de acordo com a linguagem:
Por exemplo, quando você trabalha localmente com .NET, DefaultAzureCredential geralmente se autentica usando a conta usada para entrar em Visual Studio, CLI do Azure ou Azure PowerShell. Quando você implanta o aplicativo em Azure, DefaultAzureCredential descobre e usa automaticamente a identidade gerenciada do serviço de hospedagem associado, como Serviço de Aplicativo do Azure. Você não precisa fazer alterações de código para essa transição.
Observação
Uma identidade gerenciada fornece uma identidade de segurança para representar um aplicativo ou serviço. A plataforma Azure gerencia a identidade, e você não precisa provisionar nem fazer a rotação dos segredos. Para saber mais, confira a documentação de visão geral .
O exemplo de código a seguir demonstra como se conectar a Barramento de Serviço usando conexões sem senha. Outra documentação descreve como migrar para essa configuração para um serviço específico com mais detalhes. Um aplicativo .NET pode passar uma instância de DefaultAzureCredential para o construtor de uma classe de cliente de serviço.
DefaultAzureCredential descobre automaticamente as credenciais que estão disponíveis nesse ambiente.
ServiceBusClient serviceBusClient = new(
new Uri("https://<your-service-bus-namespace>.servicebus.windows.net"),
new DefaultAzureCredential());
Consulte também
Para obter uma explicação mais detalhada das conexões sem senha, consulte o guia do desenvolvedor Configurar conexões sem senha entre vários aplicativos e serviços do Azure.