Compartilhar via


Configuração centralizada

Dica

Esse conteúdo é um trecho do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

Miniatura de capa do eBook

Ao contrário de um aplicativo monolítico no qual tudo é executado em uma única instância, um aplicativo nativo de nuvem consiste em serviços independentes distribuídos entre máquinas virtuais, contêineres e regiões geográficas. O gerenciamento de configurações para dezenas de serviços interdependentes pode ser desafiador. Cópias duplicadas das configurações em diferentes locais são propensas a erros e difíceis de gerenciar. A configuração centralizada é um requisito crítico para aplicativos nativos de nuvem distribuídos.

Conforme discutido no Capítulo 1, as recomendações do aplicativo Twelve-Factor exigem uma separação estrita entre o código e a configuração. A configuração deve ser armazenada fora 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 dar 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 de Aplicativo do Azure

A Configuração de Aplicativo do Azure é um serviço do Azure totalmente gerenciado que armazena configurações 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 de Aplicativos do Azure mantém as alterações feitas nas configurações de chave-valor por sete dias. O recurso de instantâneo pontual permite reconstruir o histórico de uma configuração e até mesmo reverter para uma implantação com falha.

A Configuração de Aplicativos armazena automaticamente em cache cada configuração para evitar chamadas excessivas para o repositório de configuração. 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 for alterado no repositório de configuração. O tempo de expiração do cache padrão é de 30 segundos. Você pode alterar o prazo de validade.

A Configuração de Aplicativos criptografa todos os valores de configuração em trânsito e em repouso. Os principais nomes e rótulos são usados como índices para recuperar dados de configuração e não são criptografados.

Embora a Configuração de Aplicativos forneça segurança protegida, o Azure Key Vault ainda é o melhor lugar para armazenar segredos do aplicativo. O Key Vault fornece criptografia no nível de hardware, além de políticas de acesso granulares e operações de gerenciamento, como a rotação de certificado. Você pode criar valores de Configuração de Aplicativo que fazem referência a segredos armazenados em um Key Vault.

Azure Key Vault

O Key Vault é um serviço gerenciado para armazenar e acessar segredos com segurança. Um segredo é tudo o que você deseja controlar firmemente o acesso, como chaves de API, senhas ou certificados. Um cofre é um grupo lógico de segredos.

O Key Vault reduz consideravelmente a probabilidade de os segredos serem vazados acidentalmente. Ao usar o Key Vault, os desenvolvedores de aplicativos não precisam mais armazenar informações de segurança em seu aplicativo. Essa prática elimina a necessidade de armazenar essas informações dentro de seu código. Por exemplo, um aplicativo pode precisar se conectar a um banco de dados. Em vez de armazenar a cadeia de conexão no código do aplicativo, armazene-o com segurança no Key Vault.

Os aplicativos podem acessar com segurança as informações necessárias usando URIs. Esses URIs permitem que os aplicativos recuperem versões específicas de um segredo. Não há necessidade de gravar código personalizado para proteger informações secretas armazenadas no Key Vault.

O acesso ao Key Vault requer autenticação e autorização de chamador adequadas. Normalmente, cada microsserviço nativo de nuvem usa uma combinação ClientId/ClientSecret. É importante manter essas credenciais fora do controle do código-fonte. Uma prática recomendada é defini-las no ambiente do aplicativo. O acesso direto ao Key Vault do AKS pode ser obtido usando o Key Vault FlexVolume.

Configuração no eShop

O aplicativo eShopOnContainers inclui arquivos de configurações de aplicativo local 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 com 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 repositório de configuração central. Para dar suporte ao gerenciamento centralizado de configurações, cada microsserviço inclui uma configuração para alternar entre o uso de configurações locais ou as configurações do Azure Key Vault.

Referências