Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Sugestão
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 Twelve-Factor App exigem uma separação estrita entre código e configuração. A configuração deve ser armazenada externamente ao aplicativo e ser lida quando 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 de Aplicações do Azure mantém as alterações feitas nas configurações de chave-valor por sete dias. A funcionalidade de instantâneo em um ponto específico no tempo permite reconstruir o histórico de uma definição e até mesmo reverter para um estado anterior em caso de falha de implementação.
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 sobrescrever o prazo de validade.
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 é qualquer coisa que você queira controlar rigorosamente o acesso, como chaves de API, senhas ou certificados. Um cofre é um agrupamento lógico de segredos.
O Key Vault reduz grandemente as possibilidades de haver fugas de segredos acidentais. Ao usar o Cofre de Chaves, os desenvolvedores de aplicativos não precisam mais armazenar informações de segurança em seus aplicativos. Essa prática elimina a necessidade de armazenar essas informações dentro do 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, 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 de Chaves requer a autenticação e autorização adequadas do utilizador. 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
- Azure Cache for Redis
- API do Azure Cosmos DB para MongoDB
- Barramento de Serviço do Azure
- Descrição geral do Azure Monitor
- eShopOnContainers: Criar cluster Kubernetes no AKS
- eShopOnContainers: Espaços de Desenvolvimento do Azure
- Azure Dev Spaces