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.
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 cautela ao manusear palavras-passe e chaves secretas. Nunca os coloque num local inseguro. Muitas aplicações ligam-se a bases de dados backend, cache, mensagens e serviços de eventos usando nomes de utilizador, palavras-passe e chaves de acesso. Se expostos, agentes mal-intencionados podem usar estas credenciais para obter acesso não autorizado a informações sensíveis, como um catálogo de vendas que construiu 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 programadores externalizam essas palavras-passe usando variáveis de ambiente para que as aplicações possam carregá-las a partir de diferentes ambientes. No entanto, esta abordagem apenas transfere 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 seguinte demonstra como se ligar 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 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 alternar 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 confiar, sempre verificar e livre de credenciais". Este princípio significa garantir todas as comunicações através de máquinas ou utilizadores confiáveis apenas após verificação da identidade e antes de lhes conceder acesso a serviços de backend.
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. Ao usar esta abordagem, não precisa de rastrear e gerir manualmente muitos segredos diferentes para identidades geridas, porque o Azure gere estas tarefas internamente, de forma segura.
Pode configurar ligações sem palavra-passe aos serviços do Azure usando o Service Connector ou pode configurá-las manualmente. O Service Connector permite identidades geridas em serviços de alojamento de aplicações como o Serviço de Aplicações do Azure e o Azure Container Apps. O Service Connector também configura serviços backend com ligações sem palavra-passe através de identidades geridas e Azure RBAC, e hidrata as aplicações com a informação de ligação necessária.
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
Pode utilizar DefaultAzureCredential das bibliotecas de cliente do Azure Identity para implementar ligações sem palavra-passe aos serviços do Azure através do Microsoft Entra ID e do controlo de acesso baseado em funções (RBAC).
Importante
Algumas linguagens exigem que implementes DefaultAzureCredential explicitamente no teu código, enquanto outras usam DefaultAzureCredential internamente através de plugins ou drivers subjacentes.
DefaultAzureCredential suporta múltiplos métodos de autenticação e determina automaticamente qual o método a usar 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 procura credenciais variam consoante a linguagem:
Por exemplo, quando trabalha localmente com .NET, DefaultAzureCredential geralmente autentica-se usando a conta que usou para iniciar sessão no Visual Studio, CLI do Azure ou Azure PowerShell. Quando implementa a aplicação no Azure, DefaultAzureCredential descobre automaticamente e utiliza a identidade gerida do serviço de alojamento associado, como o Serviço de Aplicações do Azure. Não precisas de fazer alterações de código para esta transição.
Observação
Uma identidade gerenciada fornece uma identidade de segurança para representar um aplicativo ou serviço. A plataforma Azure gere a identidade e não é necessário aprovisionar nem renovar segredos. Para saber mais, consulte a documentação de visão geral .
O exemplo de código seguinte demonstra como se ligar ao Service Bus usando ligações sem palavra-passe. Outra documentação descreve como migrar para essa configuração para um serviço específico com mais detalhes. Uma aplicação .NET pode passar uma instância de DefaultAzureCredential para o construtor de uma classe de cliente de serviço.
DefaultAzureCredential descobre automaticamente as credenciais disponíveis nesse ambiente.
ServiceBusClient serviceBusClient = new(
new Uri("https://<your-service-bus-namespace>.servicebus.windows.net"),
new DefaultAzureCredential());
Ver 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.