Un state IaC n’est pas un simple fichier technique caché derrière une commande. C’est la mémoire opérationnelle de votre infrastructure : identifiants de ressources, topologie, métadonnées, sorties utiles, et parfois valeurs sensibles. Dès qu’une équipe travaille à plusieurs, sauvegarde des plans ou stocke un backend distant, cet état devient un actif à protéger au même titre qu’un coffre de secrets ou qu’une console d’administration.
Cette page explique pourquoi le state existe, ce qu’il peut révéler, et pourquoi la sécurité ne se résume pas à “mettre le state à distance”. Le vrai sujet est plus large : qui peut le lire, où il est copié, quelles données y transitent, et comment éviter qu’un besoin temporaire devienne une fuite durable.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- comprendre ce que contient réellement un state ;
- identifier les surfaces de fuite autour de l’état, des plans et des artefacts ;
- poser des règles simples de stockage, d’accès, de verrouillage et de sauvegarde.
Pourquoi le state existe
Section intitulée « Pourquoi le state existe »Un outil IaC ne compare pas seulement votre code avec le réel. Il garde aussi une mémoire des objets qu’il pilote pour savoir :
- quelle ressource distante correspond à quelle déclaration ;
- ce qui a déjà été créé ;
- ce qui doit être modifié, remplacé ou supprimé ;
- dans quel ordre les changements doivent être appliqués.
Sans cet état, l’outil perd une partie de sa mémoire opérationnelle. Il peut alors devenir incapable de différencier un objet déjà existant d’un objet à créer, ou une modification mineure d’un remplacement complet.
Ce qu’un state révèle vraiment
Section intitulée « Ce qu’un state révèle vraiment »Les débutants imaginent souvent qu’un state contient seulement des identifiants techniques. En réalité, il peut exposer beaucoup plus.
| Catégorie | Exemples | Pourquoi c’est sensible |
|---|---|---|
| Topologie | réseaux, sous-réseaux, rôles, endpoints | aide à comprendre l’architecture |
| Identifiants d’objets | IDs cloud, chemins, noms, ARN, URLs | facilite le pivot ou l’énumération |
| Données de configuration | tailles, régions, flags de sécurité, politiques | révèle les choix de durcissement ou leurs absences |
| Sorties utiles | IP, URLs, chaînes de connexion, certificats | donne des points d’entrée directs |
| Valeurs sensibles possibles | mots de passe initiaux, tokens, clés, backend credentials | expose un accès immédiat |
Le point important est le suivant : même si aucune valeur secrète brute n’y apparaît, un state reste une source de renseignement opérationnel. Il peut déjà suffire à accélérer une compromission ou une mauvaise manipulation.
Pourquoi “masquer” ne veut pas dire “ne pas stocker”
Section intitulée « Pourquoi “masquer” ne veut pas dire “ne pas stocker” »Certaines équipes confondent trois choses différentes :
- cacher une valeur dans une sortie CLI ;
- éviter qu’elle apparaisse dans un diff ou une interface ;
- empêcher qu’elle soit persistée dans l’état, un plan ou un artefact.
Ces trois niveaux ne sont pas équivalents. Une donnée peut être masquée à l’écran, puis quand même se retrouver dans un state, dans un plan sauvegardé, dans un backend mal protégé ou dans un fichier auxiliaire généré par l’outil.
Autrement dit : ce n’est pas parce qu’une valeur n’est pas visible dans le terminal qu’elle a disparu de la chaîne technique.
Les vraies surfaces d’exposition autour du state
Section intitulée « Les vraies surfaces d’exposition autour du state »Quand on parle de sécurité du state, il faut regarder toute la chaîne, pas seulement le fichier principal.
1. Le stockage local
Section intitulée « 1. Le stockage local »Le risque le plus simple est le state local laissé sur un poste, dans un répertoire de travail ou dans une archive partagée. Cela inclut aussi les copies de secours oubliées et les répertoires internes versionnés par erreur.
2. Le backend distant
Section intitulée « 2. Le backend distant »Un backend distant améliore la collaboration et peut réduire le risque de perte locale, mais il ne rend pas l’état automatiquement sain. Si les accès sont trop larges, si le chiffrement est absent ou si les sauvegardes sont mal contrôlées, le problème est simplement déplacé.
3. Les plans et artefacts d’exécution
Section intitulée « 3. Les plans et artefacts d’exécution »Un plan enregistré, un artefact de CI, un export JSON, une sauvegarde ou un journal de debug peuvent capturer tout ou partie des mêmes informations sensibles que le state.
4. La configuration du backend elle-même
Section intitulée « 4. La configuration du backend elle-même »Une erreur fréquente consiste à protéger le state, mais à laisser les identifiants du backend dans le dépôt, dans une commande shell historisée ou dans un fichier auxiliaire non traité comme sensible.
La base saine : ce qu’il faut mettre en place
Section intitulée « La base saine : ce qu’il faut mettre en place »La protection du state repose sur plusieurs couches complémentaires.
-
Sortir l’état des postes individuels quand le travail devient collectif
Dès qu’une équipe travaille à plusieurs ou qu’un pipeline exécute des changements, l’état doit vivre dans un stockage pensé pour la collaboration, pas dans un fichier local recopié à la main.
-
Chiffrer et journaliser l’accès
Le stockage doit protéger les données au repos et en transit, et permettre de savoir qui a lu, modifié ou restauré l’état.
-
Limiter les lecteurs réels
Tout le monde n’a pas besoin de télécharger le state complet. L’accès doit suivre le principe du moindre privilège, surtout en production.
-
Verrouiller les opérations concurrentes
Un état partagé sans verrouillage fiable devient un problème d’intégrité autant qu’un problème de sécurité.
-
Tester sauvegarde et restauration
Un backend bien choisi ne remplace pas une vraie procédure de récupération. Il faut savoir restaurer sans improviser en incident.
Quand une donnée ne devrait pas transiter par le state
Section intitulée « Quand une donnée ne devrait pas transiter par le state »Toutes les informations utilisées pendant un déploiement n’ont pas vocation à être conservées durablement.
Voici les cas à traiter avec une vigilance particulière :
- un mot de passe ou un jeton utilisé seulement pour créer une ressource ;
- une valeur temporaire de bootstrap ;
- un secret court qui ne doit vivre que pendant l’opération ;
- une donnée de connexion qu’un consommateur final peut récupérer lui-même plus tard.
Dans ces situations, la bonne question n’est pas seulement “comment cacher la valeur ?”, mais plutôt “faut-il vraiment la persister dans l’état ?”.
Signaux d’alerte qui montrent une dette de sécurité
Section intitulée « Signaux d’alerte qui montrent une dette de sécurité »| Signal | Ce qu’il révèle |
|---|---|
| State commité ou archivé sans contrôle | fuite potentielle déjà installée |
| Trop de personnes peuvent télécharger l’état | périmètre de confiance trop large |
| Plans ou exports circulent librement | duplication incontrôlée des données sensibles |
| Aucun verrouillage sérieux | risque de corruption et d’écriture concurrente |
| Pas de procédure de restauration testée | dépendance fragile à un backend supposé fiable |
| Credentials de backend dans le dépôt ou les commandes | déplacement du secret au mauvais endroit |
Ce qu’il faut éviter
Section intitulée « Ce qu’il faut éviter »Croire que le remote règle tout
Section intitulée « Croire que le remote règle tout »Le remote améliore beaucoup de choses, mais ne remplace ni le chiffrement, ni l’audit, ni le moindre privilège, ni les procédures de sauvegarde.
Distribuer le state complet comme outil de diagnostic ordinaire
Section intitulée « Distribuer le state complet comme outil de diagnostic ordinaire »Quand un incident survient, on a souvent le réflexe de partager rapidement un export complet. C’est parfois efficace à court terme, mais très mauvais pour le périmètre de confiance.
Mélanger données métier utiles et secrets bruts
Section intitulée « Mélanger données métier utiles et secrets bruts »Une IP de service, une URL ou un identifiant de ressource peuvent devoir être exposés. Une clé privée, un mot de passe ou un token durable ne devraient pas suivre la même logique.
Oublier les fichiers annexes
Section intitulée « Oublier les fichiers annexes »Le state principal attire l’attention. Les plans, exports, fichiers internes d’initialisation, artefacts ou logs techniques sont souvent les vraies zones oubliées.
À retenir
Section intitulée « À retenir »- Le state est une mémoire opérationnelle, pas un simple détail de mise en oeuvre.
- Même sans secret brut, il révèle une cartographie utile de votre infrastructure.
- Masquer une valeur en sortie ne garantit pas qu’elle n’est pas stockée ailleurs.
- La sécurité du state dépend du stockage, du chiffrement, des accès, du verrouillage, des sauvegardes et des artefacts autour.
- Plus une donnée est temporaire ou sensible, plus il faut se demander si elle doit vraiment transiter par l’état durable.