Un guide sur la dérive de configuration et comment la prévenir



La divergence de configuration représente un défi majeur pour tous les professionnels du développement utilisant l’approche IaC (Infrastructure as Code). Cet article approfondit la compréhension de la gestion de cette divergence, en explorant son importance, ses causes profondes et les solutions potentielles.

Qu’est-ce que la divergence de configuration ?

Les responsables d’applications doivent continuellement adapter leurs logiciels et l’infrastructure qui les supporte afin d’optimiser l’expérience utilisateur. Ces utilisateurs peuvent être des collaborateurs internes ou des clients externes à l’entreprise.

Les ajustements et les mises à jour entraînent des modifications dans la configuration des applications et de l’infrastructure. Ces transformations peuvent être bénéfiques ou, à l’inverse, détériorer la sécurité des systèmes. La divergence de configuration est le terme désignant cette évolution.

Comment fonctionne la divergence de configuration ?

La complexité des systèmes de production et de déploiement logiciel accroît le risque de divergence de configuration. Le code est habituellement transféré du poste de travail du développeur vers un environnement de développement partagé, puis vers les environnements de test et d’assurance qualité, pour enfin atteindre les environnements de préproduction et de production.

L’impact potentiel d’une divergence augmente avec sa position dans le pipeline de déploiement. Des variations minimes, par exemple entre la version d’un paquet installée sur l’ordinateur du développeur et celle déployée sur un serveur de test, peuvent retarder le débogage. En théorie, seuls les environnements de mise en scène et de production sont censés être des répliques fidèles. La pression est forte, car de nombreuses entreprises déploient du code plusieurs fois par jour.

Causes fréquentes de divergence de configuration

Manque de communication

Il arrive que les équipes en amont ne communiquent pas les modifications apportées à leurs partenaires en aval, ce qui perturbe le fonctionnement du système dans son ensemble.

Correctifs

Les correctifs sont des modifications apportées au code pour résoudre un problème critique nécessitant une action immédiate, sans attendre la prochaine mise à jour planifiée. Parfois, les ingénieurs responsables de la résolution du problème ne mettent pas à jour les correctifs ou ne les documentent pas dans d’autres environnements du pipeline, ce qui engendre une divergence. La réintroduction du problème initial peut pallier cette divergence.

Mises à jour critiques des paquets

Les mises à jour critiques des paquets ressemblent aux correctifs car elles sont réalisées rapidement. La principale distinction est que les mises à jour critiques sont déployées pour prévenir des incidents futurs. Elles peuvent donc provoquer une divergence de la même manière que les correctifs.

Manque d’automatisation

L’automatisation ne supprime pas totalement les risques de divergence de configuration, mais elle en diminue fortement la probabilité.

Modifications de commodité

Il arrive que les développeurs apportent des modifications temporaires. Par exemple, une divergence se produit si un développeur installe un nouveau paquet sur un serveur de test pour évaluer une fonctionnalité, et oublie de rétablir la configuration d’origine.

Pourquoi la gestion de la configuration est-elle essentielle ?

L’un des aspects les plus nuisibles de la divergence de configuration est qu’elle peut passer inaperçue si elle n’est pas surveillée en continu. Elle affaiblit progressivement la base de votre infrastructure, tel une petite fuite d’eau dissimulée derrière un mur.

Lorsqu’une divergence de configuration est découverte, il faut du temps pour identifier sa cause profonde, une ressource particulièrement précieuse en cas d’urgence.

Dans le développement logiciel, la divergence de configuration est une cause majeure de ralentissement des cycles de publication, entraînant un travail inutile et réduisant la productivité des développeurs.

Réduction des coûts

Une vision détaillée de votre infrastructure informatique permet d’identifier les doublons ou les surprovisionnements, réduisant ainsi les dépenses globales.

Amélioration de la productivité

Des configurations stables et bien définies permettent une gestion par lots et la construction d’infrastructures. De plus, limiter le nombre de serveurs uniques (ou « flocons de neige ») réduit la nécessité de gérer manuellement les paramètres individuels.

Débogage plus rapide

Des configurations cohérentes permettent aux équipes de débogage d’éliminer les erreurs de configuration. Les équipes peuvent se concentrer sur d’autres causes potentielles, résolvant ainsi les incidents plus rapidement, sans avoir à rechercher des écarts de configuration entre les serveurs, les groupes de serveurs ou les environnements.

Problèmes engendrés par la divergence de configuration

Problèmes de sécurité

Les configurations non sécurisées sont une cause fréquente de failles de sécurité. La divergence de configuration peut rendre plus probables d’autres attaques et violations de réseau, même si vous partez d’une configuration protégée.

Temps d’arrêt

Une erreur de configuration peut entraîner un temps d’arrêt important, en permettant à un attaquant d’exploiter une faille DoS ou de compromettre un serveur critique. De plus, si vous modifiez la configuration d’un périphérique réseau, cela peut affecter les performances. Même si vous avez une « configuration de référence », sa restauration prendra du temps si elle est défectueuse.

Non-conformité

Des contrôles de sécurité stricts sont essentiels pour respecter les réglementations comme ISO 27001, PCI-DSS et HIPAA. La divergence de configuration peut entraîner une non-conformité si elle n’est pas maîtrisée.

Performances dégradées

Une configuration est généralement optimale dans son état prévu. Les modifications ponctuelles peuvent perturber les efforts d’optimisation du réseau en provoquant des goulets d’étranglement et des conflits.

Perte de temps

Le dépannage d’un réseau peu familier ou non conforme à sa documentation peut s’avérer long. La divergence de configuration peut engendrer des problèmes de dépannage informatique inutiles, ou qui auraient été plus faciles à résoudre si le réseau avait conservé son état prévu.

Erreurs courantes à surveiller lors de la surveillance de la divergence de configuration

Dans un scénario idéal, tous les serveurs de développement (Dev/QA/Staging/Prod) auraient des configurations identiques. Malheureusement, dans la réalité, les propriétaires d’applications modifient fréquemment l’infrastructure lors de l’intégration de nouvelles fonctionnalités.

La surveillance de la divergence de configuration est cruciale pour assurer l’homogénéité des environnements logiciels. La gestion de la configuration réduit les coûts, améliore la productivité et le temps de débogage, et optimise l’expérience utilisateur.

Pour une surveillance efficace, les entreprises doivent éviter les erreurs, même lorsqu’elles utilisent la gestion de la configuration.

Voici les erreurs courantes :

Négliger la maintenance d’une CMDB

La mise à jour d’une base de données de gestion de la configuration (CMDB) est un élément important de la gestion de la configuration. Une CMDB centralise les informations sur les installations matérielles et logicielles d’un réseau. Les données sont collectées pour chaque actif ou élément de configuration, offrant visibilité et transparence.

Ne pas maintenir une CMDB expose les entreprises au risque de ne pas appréhender pleinement l’impact de la configuration d’un élément sur un autre. Les organisations risquent d’endommager leur infrastructure et leur sécurité sans en comprendre les conséquences.

Les CMDB peuvent être difficiles à gérer, surtout avec l’augmentation du nombre d’actifs, mais une gestion efficace est essentielle pour surveiller la divergence de configuration et comprendre l’infrastructure.

Absence de plan de surveillance de la divergence de configuration

Les organisations doivent souvent gérer des infrastructures complexes et massives. Il est crucial de définir quels composants nécessitent une surveillance prioritaire, au risque de rendre la gestion de la configuration ingérable et chaotique.

Les organisations doivent spécifier les actifs essentiels à la surveillance pour l’entreprise et ses unités commerciales. Les systèmes les plus critiques seront surveillés, et ceux-ci varieront d’une unité et d’un secteur à l’autre.

Ne pas automatiser la surveillance

La divergence de configuration peut être surveillée de différentes manières, mais certaines approches sont plus sophistiquées et efficaces que d’autres.

La surveillance manuelle est chronophage et coûteuse. Elle expose également au risque d’erreur humaine. Cette méthode n’est pas optimale pour la surveillance de la divergence de configuration, sauf pour les entreprises avec une infrastructure très réduite.

La surveillance automatisée est la méthode la plus efficace pour maintenir les configurations dans l’état souhaité. Des systèmes de surveillance dédiés peuvent détecter les divergences instantanément et proposent souvent des solutions, y compris une correction rapide, assurant une restauration de l’infrastructure dans son état souhaité aussi rapidement que possible et avec un minimum d’impact.

Comment surveiller la divergence de configuration :

Il devient clair que la détection de la divergence de configuration devrait être une priorité une fois que vous réalisez les dommages qu’elle peut causer. La première étape consiste à identifier les configurations à préserver et à déterminer pourquoi une modification a entraîné une divergence.

Savoir ce qu’il faut rechercher

Vous pouvez organiser votre entreprise en identifiant les composants essentiels à l’ensemble de l’organisation, ainsi que ceux qui sont importants pour chaque unité commerciale.

Cela varie d’une unité à l’autre et peut être coûteux dans les secteurs très réglementés. L’importance du système détermine la fréquence et la rigueur des systèmes de surveillance.

Définir une ligne de base

Il y aura toujours des écarts entre un environnement de production et les étapes de test. La ligne de base pour vérifier la divergence est établie en définissant l’état souhaité de chaque étape et les écarts autorisés.

Les premières étapes de test peuvent tolérer une plus grande divergence qu’un test d’acceptation utilisateur ou qu’une étape de fabrication où la tolérance à la divergence doit être nulle.

Surveiller votre système

Le niveau de surveillance nécessaire dépend de la maturité de l’entreprise, de ses systèmes actuels, de ses outils, du nombre de configurations à vérifier et du niveau de contrôle requis. La surveillance peut différer pour chaque unité au sein d’une organisation en fonction des exigences et de la conformité.

Comment prévenir la divergence de configuration

Après avoir établi une base de configurations et les écarts autorisés, la surveillance doit garantir que l’infrastructure conserve la configuration adéquate. Sans stratégie de surveillance, la création de plans de configuration et de documentation est une perte de temps.

Diverses approches peuvent être utilisées pour surveiller la divergence de configuration. De nombreuses entreprises combinent méthodologies et outils en fonction de leur maturité et de leurs exigences de conformité.

Surveillance manuelle continue

Les configurations de machines individuelles peuvent être examinées manuellement et comparées à un fichier de configuration de référence. En raison de l’aspect humain, ce processus est source d’erreurs et coûteux en temps de travail. Il ne devrait être utilisé qu’à petite échelle pour des groupes de serveurs spécifiques ou pour les entreprises avec une faible empreinte d’infrastructure.

Audits

Dans le cadre d’audits de configuration, une équipe examine manuellement les configurations de serveur, en les comparant à un modèle spécifié. Ces audits peuvent être coûteux, car ils nécessitent une expertise pour déterminer comment un système doit être construit, puis une enquête approfondie sur tout changement non documenté afin de déterminer s’il doit être conservé ou non.

L’équipe d’audit effectue également les ajustements nécessaires aux documents de configuration qui seront appliqués lors du prochain audit. Les audits sont généralement réservés aux groupes de grande valeur ou à forte conformité et exécutés régulièrement, souvent plusieurs fois par an, en raison du temps et des coûts impliqués.

L’audit garantit une configuration de serveur cohérente et reproductible selon un calendrier prédéterminé.

Cependant, les paramètres vont dériver et s’éloigner de plus en plus de leur état initial, jusqu’au prochain audit.

Surveillance automatisée en temps réel

La surveillance automatisée en temps réel est la méthode la plus sophistiquée pour maintenir les configurations dans l’état souhaité. Elle implique la création de serveurs ou de groupes de serveurs avec une description de la manière dont ils doivent être configurés à l’aide d’outils dédiés.

Ces programmes utilisent un agent léger pour surveiller la configuration d’un serveur dans un groupe et la comparer à sa définition.

Ce processus automatisé signale immédiatement toute divergence et propose généralement plusieurs options pour la corriger.

En guise de conclusion :

La divergence de configuration est due aux incohérences entre les éléments de configuration (CI) sur les ordinateurs ou les appareils. Elle se produit naturellement dans les environnements de centres de données lorsque des modifications logicielles et matérielles sont effectuées à la volée sans être correctement documentées ou suivies.

De nombreuses défaillances de systèmes de haute disponibilité et de reprise après sinistre sont attribuées à la divergence de configuration. Les administrateurs doivent tenir des registres méticuleux des adresses réseau des périphériques matériels, ainsi que des versions logicielles installées et des mises à niveau réalisées, afin de minimiser la divergence de configuration.