Configuração centralizada
Gorjeta
Este conteúdo é um excerto do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF transferível gratuito que pode ser lido offline.
Ao contrário de um aplicativo monolítico em que tudo é executado em uma única instância, um aplicativo nativo da nuvem consiste em serviços independentes distribuídos entre máquinas virtuais, contêineres e regiões geográficas. Gerenciar definições de configuração para dezenas de serviços interdependentes pode ser um desafio. Cópias duplicadas de definições de configuração em diferentes locais são propensas a erros e difíceis de gerenciar. A configuração centralizada é um requisito crítico para aplicativos distribuídos nativos da nuvem.
Conforme discutido no Capítulo 1, as recomendações do Aplicativo de Doze Fatores exigem uma separação estrita entre código e configuração. A configuração deve ser armazenada externamente a partir do aplicativo e lida conforme necessário. Armazenar valores de configuração como constantes ou valores literais no código é uma violação. Os mesmos valores de configuração geralmente são usados por muitos serviços no mesmo aplicativo. Além disso, devemos oferecer suporte aos mesmos valores em vários ambientes, como desenvolvimento, teste e produção. A prática recomendada é armazená-los em um repositório de configuração centralizado.
A nuvem do Azure apresenta várias opções excelentes.
Configuração da Aplicação Azure
A Configuração de Aplicativo do Azure é um serviço do Azure totalmente gerenciado que armazena definições de configuração não secretas em um local seguro e centralizado. Os valores armazenados podem ser compartilhados entre vários serviços e aplicativos.
O serviço é simples de usar e oferece vários benefícios:
- Mapeamentos e representações de chave/valor flexíveis
- Marcação com rótulos do Azure
- Interface do usuário dedicada para gerenciamento
- Criptografia de informações confidenciais
- Consulta e recuperação em lote
A Configuração do Aplicativo do Azure mantém as alterações feitas nas configurações de chave-valor por sete dias. O recurso de instantâneo point-in-time permite reconstruir o histórico de uma configuração e até mesmo reverter para uma implantação com falha.
A Configuração do Aplicativo armazena automaticamente em cache cada configuração para evitar chamadas excessivas para o repositório de configurações. A operação de atualização aguarda até que o valor armazenado em cache de uma configuração expire para atualizar essa configuração, mesmo quando seu valor é alterado no repositório de configuração. O tempo de expiração padrão do cache é de 30 segundos. Você pode substituir o tempo de expiração.
A Configuração do Aplicativo criptografa todos os valores de configuração em trânsito e em repouso. Nomes de chaves e rótulos são usados como índices para recuperar dados de configuração e não são criptografados.
Embora a Configuração do Aplicativo forneça segurança reforçada, o Cofre da Chave do Azure ainda é o melhor lugar para armazenar segredos de aplicativos. O Key Vault fornece criptografia no nível de hardware, políticas de acesso granulares e operações de gerenciamento, como rotação de certificados. Você pode criar valores de Configuração do Aplicativo que fazem referência a segredos armazenados em um Cofre de Chaves.
Azure Key Vault
O Key Vault é um serviço gerenciado para armazenar e acessar segredos com segurança. Um segredo é tudo aquilo cujo acesso deseja controlar rigidamente, como chaves de API, palavras-passe ou certificados. Um cofre é um grupo lógico de segredos.
O Key Vault reduz grandemente as possibilidades de haver fugas de segredos acidentais. Se o Key Vault for utilizado, os programadores de aplicações já não precisam de armazenar informações de segurança nas aplicações. Essa prática elimina a necessidade de armazenar essas informações dentro do seu código. Por exemplo, uma aplicação poderá ter de se ligar a uma base de dados. Em vez de armazenar a cadeia de conexão no código do aplicativo, você pode armazená-la com segurança no Cofre da Chave.
Seus aplicativos podem acessar com segurança as informações de que precisam usando URIs. Esses URIs permitem que os aplicativos recuperem versões específicas de um segredo. Não há necessidade de escrever código personalizado para proteger qualquer informação secreta armazenada no Cofre de Chaves.
O acesso ao Cofre da Chave requer autenticação e autorização adequadas do chamador. Normalmente, cada microsserviço nativo da nuvem usa uma combinação ClientId/ClientSecret. É importante manter essas credenciais fora do controle do código-fonte. Uma prática recomendada é defini-los no ambiente do aplicativo. O acesso direto ao Key Vault a partir do AKS pode ser obtido usando o Key Vault FlexVolume.
Configuração na eShop
O aplicativo eShopOnContainers inclui arquivos de configurações de aplicativos locais com cada microsserviço. Esses arquivos são verificados no controle do código-fonte, mas não incluem segredos de produção, como cadeias de conexão ou chaves de API. Na produção, as configurações individuais podem ser substituídas por variáveis de ambiente por serviço. Injetar segredos em variáveis de ambiente é uma prática comum para aplicativos hospedados, mas não fornece um armazenamento de configuração central. Para dar suporte ao gerenciamento centralizado de definições de configuração, cada microsserviço inclui uma configuração para alternar entre seu uso de configurações locais ou configurações do Azure Key Vault.
Referências
- A arquitetura eShopOnContainers
- Orquestrando microsserviços e aplicativos de vários contêineres para alta escalabilidade e disponibilidade
- Gestão de API do Azure
- Visão geral do Banco de Dados SQL do Azure
- Cache do Azure para Redis
- API do Azure Cosmos DB para MongoDB
- Azure Service Bus
- Descrição geral do Azure Monitor
- eShopOnContainers: Criar cluster Kubernetes no AKS
- eShopOnContainers: Espaços de Desenvolvimento do Azure
- Azure Dev Spaces