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.
Parte anterior: Introdução e plano de fundo
Neste cenário de exemplo, o aplicativo principal tem três requisitos de autenticação distintos:
Azure Key Vault
O aplicativo deve se autenticar com Azure Key Vault para recuperar uma chave de API armazenada com segurança necessária para chamar um serviço de terceiros.
API de terceiros
Depois que o aplicativo recupera a chave de API, ele usa a chave para autenticar com a API de terceiros externa.
Armazenamento de Filas do Azure
Depois de processar a solicitação, o aplicativo deve se autenticar com o Armazenamento de Filas do Azure para enfileirar uma mensagem para processamento assíncrono ou adiado.
Essas tarefas exigem que o aplicativo gerencie três conjuntos de credenciais:
Dois conjuntos para recursos de Azure (Key Vault e Armazenamento)
Um conjunto para um serviço externo (API de terceiros)
Principais desafios de autenticação
A criação de aplicativos de nuvem seguros requer um tratamento cuidadoso das credenciais, especialmente quando vários serviços estão envolvidos. Este cenário de exemplo apresenta vários desafios críticos:
Dependência circular no Key Vault
O aplicativo usa o Azure Key Vault para armazenar segredos com segurança, como chaves de API de terceiros ou credenciais de Armazenamento do Azure. No entanto, para recuperar esses segredos, o aplicativo deve primeiro se autenticar com o Key Vault. Essa situação cria um problema circular: o aplicativo precisa de credenciais para acessar Key Vault, mas você deve armazenar essas credenciais com segurança. Sem uma solução segura, esse problema pode levar a credenciais codificadas ou configurações inseguras em ambientes de desenvolvimento.
Manipulação segura de chaves de API de terceiros
Depois de recuperar a chave de API do Key Vault, o aplicativo deve usá-la para chamar um serviço externo de terceiros. Lide com essa chave com extremo cuidado:
- Nunca codifique-o no código-fonte ou nos arquivos de configuração
- Nunca registre isso no stdout, no stderr ou nos logs da aplicação
- Segure-o somente na memória e acesse-o em runtime, pouco antes do uso
- Descarte-o imediatamente após a conclusão da solicitação
A falha ao seguir essas práticas aumenta o risco de vazamento de credenciais ou uso não autorizado.
Protegendo credenciais do Armazenamento de Filas do Azure
Para gravar mensagens no Armazenamento de Filas do Azure, o aplicativo normalmente precisa de uma cadeia de conexão ou token de acesso compartilhado. Estas credenciais:
- Deve ser armazenado em um local seguro, como o Key Vault
- Não deve aparecer em logs, rastreamentos de pilha ou ferramentas de desenvolvedor
- Deve ser acessado somente por meio de mecanismos de runtime seguros
- Exigir configuração de RBAC adequada se estiver usando a identidade gerenciada
Flexibilidade de ambiente
O aplicativo deve ser executado de forma confiável em ambientes locais de desenvolvimento e produção em nuvem, usando a mesma base de código e lógica condicional mínima.
Esse requisito significa:
- Não insira segredos específicos do ambiente no código
- Não alterne manualmente credenciais ou caminhos lógicos
- Usar a autenticação baseada em identidade de forma consistente entre ambientes
Autenticação com prioridade para Azure usando o Microsoft Entra ID
À medida que os aplicativos de nuvem escalam em complexidade e se integram a mais serviços, a autenticação segura e simplificada torna-se essencial. Azure oferece um modelo de identidade centrado no Azure por meio do Microsoft Entra ID, permitindo o gerenciamento unificado de identidades e a integração perfeita com os serviços do Azure para autenticação segura e sem credenciais.
Em vez de gerenciar manualmente segredos ou inserir credenciais no código do aplicativo , uma prática propensa a riscos de segurança, Microsoft Entra ID permite que os aplicativos se autentiquem com segurança usando identidades gerenciadas.
Os principais benefícios das identidades gerenciadas do Microsoft Entra são:
Nenhum segredo no código
Os aplicativos não exigem mais cadeias de conexão codificadas, segredos do cliente ou chaves.
Identidade interna para aplicativos
Azure pode atribuir automaticamente uma identidade gerenciada ao seu aplicativo, para que ele possa acessar com segurança serviços como Key Vault, Armazenamento e SQL sem credenciais extras.
Consistência do ambiente
O mesmo código e modelo de identidade funcionam em ambientes hospedados em Azure e desenvolvimento local usando o SDK do Azure.
DefaultAzureCredential
Fluxo de identidade específico para o ambiente
Os aplicativos que usam a ID do Microsoft Entra para autenticação se beneficiam de um modelo de identidade flexível que funciona perfeitamente em ambientes de desenvolvimento locais e hospedados no Azure. O SDK do Azure DefaultAzureCredential fornece essa consistência selecionando automaticamente o método de identidade apropriado com base no ambiente.
Ambiente do Azure
Ao implantar o aplicativo no Azure:
- O aplicativo obtém automaticamente uma identidade gerenciada.
- Azure gerencia a emissão de token e o ciclo de vida da credencial internamente, portanto, você não precisa lidar com segredos.
- O aplicativo acessa serviços usando Role-Based Controle de Acesso (RBAC) ou Key Vault políticas de acesso.
Ambiente de desenvolvimento local
Durante o desenvolvimento local:
- Uma entidade de serviço serve como a identidade do aplicativo.
- Os desenvolvedores se autenticam usando as integrações CLI do Azure (
az login), variáveis de ambiente ou Visual Studio/VS Code. - O mesmo código da aplicação é executado sem nenhuma modificação — apenas a fonte de identidade muda.
Em ambos os ambientes, os SDKs do Azure usam o DefaultAzureCredential, que abstrai a fonte de identidade e seleciona automaticamente o método adequado.
Práticas recomendadas para desenvolvimento seguro
Embora você possa definir segredos como variáveis de ambiente (por exemplo, por meio de configurações de Azure App), essa abordagem tem desvantagens:
- Você deve replicar manualmente segredos em ambientes locais.
- Há o risco de segredos vazarem no controle do código-fonte.
- Talvez seja necessário uma lógica extra para diferenciar entre ambientes.
Em vez disso, use a seguinte abordagem:
- Use o Key Vault para armazenar chaves de API de terceiros e outros segredos.
- Atribua uma identidade gerenciada ao aplicativo implantado.
- Use um principal de serviço para desenvolvimento local e atribua a ele os mesmos direitos de acesso.
- Use
DefaultAzureCredentialem seu código para abstrair a lógica de autenticação. - Evite armazenar ou fazer log das credenciais.
Fluxo de autenticação na prática
Veja como a autenticação funciona em runtime:
- Seu código cria uma
DefaultAzureCredentialinstância. - Você usa essa credencial para instanciar um cliente (por exemplo,
SecretClient,QueueServiceClient). - Quando o aplicativo invoca um método (por exemplo,
get_secret()), o cliente usa a credencial para autenticar a solicitação. - O Azure verifica a identidade e verifica se ela tem a função ou a política correta para executar a operação.
Esse fluxo garante que seu aplicativo possa acessar com segurança os serviços do Azure sem inserir segredos em arquivos de código ou configuração. Ele também permite alternar perfeitamente entre o desenvolvimento local e a implantação de nuvem sem alterar sua lógica de autenticação.