Conexões sem senha para serviços do Azure
Nota
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
Senhas e chaves secretas devem ser usadas com cuidado, e os desenvolvedores nunca devem colocá-las em um local inseguro. Muitos aplicativos se conectam a serviços de banco de dados de back-end, cache, mensagens e eventos usando nomes de usuário, senhas e chaves de acesso. Se expostas, essas credenciais podem ser usadas para obter acesso não autorizado a informações confidenciais, como um catálogo de vendas criado para uma campanha futura ou dados de clientes que devem ser privados.
A incorporação de senhas em um aplicativo em si apresenta 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, isso apenas desloca o risco do próprio código para um ambiente de execução. Qualquer pessoa que tenha 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 ao Armazenamento do Azure usando uma chave de conta de armazenamento. Muitos desenvolvedores gravitam em torno dessa solução porque ela se sente familiarizada com as opções com as quais trabalharam no passado, mesmo que não seja uma solução ideal. Se o seu aplicativo usa chaves de acesso atualmente, 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 inseguro. Muitas empresas têm requisitos de segurança rigorosos para se conectar aos serviços do Azure sem expor senhas a desenvolvedores, operadores ou qualquer outra pessoa. Eles geralmente usam um cofre para armazenar e carregar senhas em aplicativos e reduzem ainda mais o risco adicionando requisitos e procedimentos de rotação de senhas. Essa abordagem, por sua vez, aumenta a complexidade operacional e, às vezes, leva a interrupções de conexão de aplicativos.
Conexões sem senha e Zero Trust
Agora você pode usar conexões sem senha em seus aplicativos para se conectar a serviços baseados no Azure sem a necessidade de alternar senhas. Em alguns casos, tudo o que você precisa é de configuração — nenhum novo código é necessário. O Zero Trust usa o princípio de "nunca confiar, sempre verificar e livre de credenciais". Isso significa proteger todas as comunicações confiando em máquinas 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. Com essa abordagem, você não precisa rastrear e gerenciar manualmente muitos segredos diferentes para identidades gerenciadas, pois essas tarefas são tratadas internamente com segurança pelo Azure.
Você pode configurar conexões sem senha para serviços do Azure usando o Service Connector ou pode configurá-las manualmente. O Service Connector habilita identidades gerenciadas em serviços de hospedagem de aplicativos, como Azure Spring Apps, Azure App Service e Azure Container Apps. O Service Connector também configura serviços de back-end com conexões sem senha usando identidades gerenciadas e o Azure RBAC e hidrata os 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. Está prevista uma cobertura semelhante para outras línguas.
Apresentando DefaultAzureCredential
As conexões sem senha com os serviços do Azure por meio do Microsoft Entra ID e do RBAC (Controle de Acesso Baseado em Função) podem ser implementadas usando DefaultAzureCredential
as bibliotecas de cliente do Azure Identity.
Importante
Algumas linguagens devem ser implementadas DefaultAzureCredential
explicitamente em seu código, enquanto outras utilizam DefaultAzureCredential
internamente por meio de plugins ou drivers subjacentes.
DefaultAzureCredential
suporta vários métodos de autenticação e determina automaticamente quais devem ser usados em tempo de execução. Essa abordagem permite que seu aplicativo use métodos de autenticação diferentes em ambientes diferentes (desenvolvimento local versus produção) sem implementar código específico do ambiente.
A ordem e os locais em que DefaultAzureCredential
as pesquisas de credenciais variam entre os idiomas:
Por exemplo, ao trabalhar localmente com o .NET, geralmente autenticará usando a conta que o desenvolvedor usou para entrar no Visual Studio, DefaultAzureCredential
CLI do Azure ou Azure PowerShell. Quando o aplicativo é implantado no Azure, ele descobre e usa automaticamente a identidade gerenciada do serviço de hospedagem associado, DefaultAzureCredential
como o Serviço de Aplicativo do Azure. Não são necessárias alterações de código para esta transição.
Nota
Uma identidade gerenciada fornece uma identidade de segurança para representar um aplicativo ou serviço. A identidade é gerenciada pela plataforma Azure e não exige que você provisione ou alterne segredos. Você pode ler mais sobre identidades gerenciadas na documentação de visão geral .
O exemplo de código a seguir demonstra como se conectar ao Service Bus 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 para o construtor de uma classe de cliente de DefaultAzureCredential
serviço. DefaultAzureCredential
descobrirá automaticamente as credenciais disponíveis nesse ambiente.
ServiceBusClient serviceBusClient = new(
new Uri("https://<your-service-bus-namespace>.blob.core.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.