Un incident qui n'aurait dû concerner qu'un recoin du système finit par les toucher tous. Un petit bout se fait avoir, une entrée mal validée, un accès qui fuite, et de proche en proche, c'est l'ensemble qui est atteint. Quand on remonte le fil, la cause de départ est presque toujours ridicule au regard des dégâts. Ce qui a transformé un bobo en catastrophe, ce n'est pas la taille du trou initial. C'est que rien ne l'a empêché de se propager.
Parce que tout se faisait confiance. Une seule clé ouvrait toutes les portes, la base de données répondait à qui la sonnait, le moindre service pouvait parler à n'importe quel autre. Un système où tout communique avec tout, c'est un système où une seule brèche donne accès au tout.
Le gruyère et l'alignement des trous
C'est là qu'entre le modèle du gruyère. Chaque protection est une tranche de fromage : un pare-feu, une authentification, une validation. Aucune n'est parfaite, chacune a ses trous. Prises isolément, ces failles ne posent pas de drame. Le désastre arrive quand les trous s'alignent d'une tranche à l'autre et forment un couloir droit, du dehors jusqu'au cœur.
La défense en profondeur, c'est empiler des couches imparfaites mais indépendantes, pour qu'un trou dans l'une soit couvert par la suivante. Le piège, c'est le mot indépendantes. Un système plat, où tout se fait confiance, ce n'est pas un empilement de tranches : c'est une pile où les trous sont déjà alignés d'avance. Une seule brèche, et le couloir est ouvert.
Cloisonner, c'est bâtir les murs
Cloisonner, c'est isoler des zones pour qu'un problème reste là où il est né. La base de données n'est pas joignable depuis le web public : un trou dans le front n'atteint pas les données. Chaque service ne reçoit que les droits dont il a strictement besoin : un composant compromis ne peut rien faire de plus que son travail. Des identifiants séparés, des frontières réseau, des permissions au plus juste. Tout ça décide d'une seule chose : jusqu'où une brèche peut se propager avant de heurter un mur. C'est le rayon d'explosion, et le cloisonnement le raccourcit.
Ce que l'IA relie un peu trop volontiers
Demande à un assistant de faire marcher un système, et il reliera tout à tout : c'est le chemin le plus court, celui qui produit le moins d'erreurs. Il n'ajoutera pas de lui-même une frontière de permissions ou un cloisonnement que tu n'as pas demandé, parce qu'une frontière ressemble à un obstacle, et qu'un obstacle ressemble à un bug pour une machine qui optimise le « ça marche ». Décider de ce qui ne doit surtout pas pouvoir se parler, de ce qu'un composant ne doit jamais pouvoir atteindre, ça naît d'un réflexe précis : imaginer la brèche. Et imaginer la brèche, c'est du jugement, pas de la complétion.
Ce que je te conseille
Pars du principe que ça arrivera. Non pas « est-ce qu'on se fera avoir », mais « le jour où ce bout-là est compromis, jusqu'où l'attaquant peut-il aller depuis là ? ». Conçois pour que la réponse soit « pas bien loin ». Applique le moindre privilège par défaut : donne à chaque partie le minimum, pas le maximum confortable. Et à chaque nouvelle connexion que tu ouvres, pose la question : si ce côté tombe, qu'est-ce que ça ouvre de l'autre ?
Tu n'empêcheras jamais tous les trous. La défense en profondeur n'est pas le fantasme du mur parfait. C'est s'assurer que le jour où l'un cède, le suivant tient encore.
Ce satellite fait partie du dossier Le modèle du gruyère, sur la défense en profondeur. Le vocabulaire : le cloisonnement, le moindre privilège et la défense en profondeur.