Aller au contenu
Infrastructure as Code medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

State et données sensibles en IaC

10 min de lecture

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.

  • 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.

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.

Les débutants imaginent souvent qu’un state contient seulement des identifiants techniques. En réalité, il peut exposer beaucoup plus.

CatégorieExemplesPourquoi c’est sensible
Topologieréseaux, sous-réseaux, rôles, endpointsaide à comprendre l’architecture
Identifiants d’objetsIDs cloud, chemins, noms, ARN, URLsfacilite le pivot ou l’énumération
Données de configurationtailles, régions, flags de sécurité, politiquesrévèle les choix de durcissement ou leurs absences
Sorties utilesIP, URLs, chaînes de connexion, certificatsdonne des points d’entrée directs
Valeurs sensibles possiblesmots de passe initiaux, tokens, clés, backend credentialsexpose un accès immédiat

Surfaces d'exposition autour du state, des plans, du backend et des lecteurs

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.

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.

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é.

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.

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 protection du state repose sur plusieurs couches complémentaires.

  1. 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.

  2. 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.

  3. 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.

  4. 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é.

  5. 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é »
SignalCe qu’il révèle
State commité ou archivé sans contrôlefuite potentielle déjà installée
Trop de personnes peuvent télécharger l’étatpérimètre de confiance trop large
Plans ou exports circulent librementduplication incontrôlée des données sensibles
Aucun verrouillage sérieuxrisque de corruption et d’écriture concurrente
Pas de procédure de restauration testéedépendance fragile à un backend supposé fiable
Credentials de backend dans le dépôt ou les commandesdéplacement du secret au mauvais endroit

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.

Le state principal attire l’attention. Les plans, exports, fichiers internes d’initialisation, artefacts ou logs techniques sont souvent les vraies zones oubliées.

  • 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.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn