Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Conseil / Astuce
Ce contenu est un extrait de l’eBook, Architecting Cloud Native .NET Applications pour Azure, disponible sur .NET Docs ou en tant que PDF téléchargeable gratuitement qui peut être lu hors connexion.
Contrairement à une application monolithique dans laquelle tout s’exécute dans une seule instance, une application native cloud se compose de services indépendants distribués sur des machines virtuelles, des conteneurs et des régions géographiques. La gestion des paramètres de configuration pour des dizaines de services interdépendants peut être difficile. Les copies en double des paramètres de configuration à différents emplacements sont sujettes à des erreurs et difficiles à gérer. La configuration centralisée est une exigence essentielle pour les applications cloud natives distribuées.
Comme indiqué dans le chapitre 1, les recommandations d’application Twelve-Factor nécessitent une séparation stricte entre le code et la configuration. La configuration doit être stockée à l'extérieur de l'application et lue au besoin. Le stockage de valeurs de configuration sous forme de constantes ou de valeurs littérales dans le code est une violation. Les mêmes valeurs de configuration sont souvent utilisées par de nombreux services dans la même application. En outre, nous devons prendre en charge les mêmes valeurs dans plusieurs environnements, tels que le développement, le test et la production. La meilleure pratique consiste à les stocker dans un magasin de configuration centralisé.
Le cloud Azure présente plusieurs options intéressantes.
Configuration d'application Azure
Azure App Configuration est un service Azure entièrement géré qui stocke les paramètres de configuration non secrets dans un emplacement sécurisé et centralisé. Les valeurs stockées peuvent être partagées entre plusieurs services et applications.
Le service est simple à utiliser et offre plusieurs avantages :
- Représentations et mappages de clé/valeur flexibles
- Étiquetage avec des étiquettes Azure
- Interface utilisateur dédiée pour la gestion
- Chiffrement des informations sensibles
- Interrogation et récupération par lots
Azure App Configuration gère les modifications apportées aux paramètres clé-valeur pendant sept jours. La fonctionnalité d'instantané ponctuel vous permet de reconstruire l'historique d'un paramètre et même de revenir en arrière en cas de déploiement échoué.
App Configuration met automatiquement en cache chaque paramètre pour éviter les appels excessifs au magasin de configuration. L’opération d’actualisation attend que la valeur mise en cache d’un paramètre expire pour mettre à jour ce paramètre, même lorsque sa valeur change dans le magasin de configuration. La durée d’expiration du cache par défaut est de 30 secondes. Vous pouvez remplacer l’heure d’expiration.
App Configuration chiffre toutes les valeurs de configuration en transit et au repos. Les noms de clés et les étiquettes sont utilisés comme index pour récupérer des données de configuration et ne sont pas chiffrés.
Bien que App Configuration offre une sécurité renforcée, Azure Key Vault est toujours le meilleur endroit pour stocker les secrets d’application. Key Vault propose un chiffrement au niveau du matériel, des stratégies d’accès précises, ainsi que des opérations de gestion, comme la rotation des certificats. Vous pouvez créer des valeurs App Configuration qui référencent des secrets stockés dans un coffre de clés.
Azure Key Vault
Key Vault est un service managé pour stocker et accéder en toute sécurité aux secrets. Un secret est tout ce que vous souhaitez contrôler étroitement l’accès, comme les clés API, les mots de passe ou les certificats. Un coffre est un groupe logique de secrets.
Key Vault réduit considérablement les risques de fuite accidentelle des secrets. Lorsque vous utilisez Key Vault, les développeurs d’applications n’ont plus besoin de stocker les informations de sécurité dans leur application. Cette pratique élimine la nécessité de stocker ces informations à l’intérieur de votre code. Par exemple, une application peut avoir besoin de se connecter à une base de données. Dans ce cas, plutôt que d’inclure la chaîne de connexion dans le code de l’application, vous pouvez simplement la stocker en toute sécurité dans Key Vault.
Vos applications peuvent accéder en toute sécurité aux informations nécessaires en utilisant des URI. Ces URI permettent aux applications de récupérer des versions spécifiques d’un secret. Aucune écriture de code personnalisé n’est nécessaire pour protéger les informations secrètes stockées dans Key Vault.
L’accès à Key Vault nécessite l’authentification et l’autorisation de l’appelant appropriés. En règle générale, chaque microservice natif cloud utilise une combinaison ClientId/ClientSecret. Il est important de conserver ces informations d’identification en dehors du contrôle de code source. Une bonne pratique consiste à les définir dans l’environnement de l’application. L’accès direct à Key Vault à partir d’AKS peut être obtenu à l’aide de Key Vault FlexVolume.
Configuration dans eShop
L’application eShopOnContainers inclut des fichiers de paramètres d’application locaux avec chaque microservice. Ces fichiers sont archivés dans le contrôle de code source, mais n’incluent pas de secrets de production tels que des chaînes de connexion ou des clés API. En production, des paramètres individuels peuvent être remplacés par des variables d’environnement par service. L’injection de secrets dans des variables d’environnement est une pratique courante pour les applications hébergées, mais ne fournit pas de magasin de configuration central. Pour prendre en charge la gestion centralisée des paramètres de configuration, chaque microservice inclut un paramètre permettant de basculer entre son utilisation des paramètres locaux ou les paramètres Azure Key Vault.
références
- The eShopOnContainers Architecture
- Orchestration des microservices et des applications à plusieurs conteneurs pour une grande scalabilité et une haute disponibilité
- Gestion des API Azure
- Vue d’ensemble d’Azure SQL Database
- Azure Cache pour Redis
- API Azure Cosmos DB pour MongoDB
- Azure Service Bus
- Vue d’ensemble d’Azure Monitor
- eShopOnContainers : Créer un cluster Kubernetes dans AKS
- eShopOnContainers : Azure Dev Spaces
- Azure Dev Spaces