Module 08 · Cours 0804

Utiliser des agents IA pour
détecter les dérives

Surveiller l'écart entre l'état déclaré et l'état réel de votre infrastructure

@Victorlanglois 1 / 13
objectifs

Ce que vous saurez faire

détecter
Identifier les dérives entre code IaC et état réel
analyser
Interpréter les outputs Terraform et Ansible
décider
Choisir la bonne stratégie de remédiation
@Victorlanglois 2 / 13
le problème

Les dérives silencieuses

modification manuelle conséquence solution
Règle pare-feu ajoutée Port ouvert → vulnérabilité terraform plan
Scaling manuel non reporté Déploiement redimensionne → panne Surveillance continue
Config serveur modifiée Système imprévisible ansible --check
@Victorlanglois 3 / 13
workflow

De la surveillance à la décision

1
déclaration
Vous
2
surveillance
Agent
3
détection
Agent
4
alerte
Agent
5
décision
Vous

L'agent surveille et alerte. Vous gardez le contrôle sur les décisions.

@Victorlanglois 4 / 13
équivalences

Terraform vs Ansible

aspect terraform ansible
Commande terraform plan -detailed-exitcode ansible-playbook --check --diff
Indicateur Exit code = 2 changed > 0
Scope Ressources cloud (VM, réseau) Config serveur (packages, fichiers)
State Fichier tfstate externe Pas de state (idempotence)
@Victorlanglois 5 / 13
exemple terraform

Security Group modifié manuellement

votre code terraform
resource "aws_security_group" "example" {
  name = "example-sg"

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["192.168.1.0/24"]
  }
}
commande de détection
$ terraform plan -detailed-exitcode # Exit code 2 = drift détecté
@Victorlanglois 6 / 13
output terraform

Lire et interpréter le drift

~ resource "aws_security_group" "example" {
    ~ ingress = [
        + {
            + cidr_blocks = ["0.0.0.0/0"]
            + description = "Temp rule added from console"
            + from_port   = 80
            + to_port     = 80
          },
      ]
  }

Plan: 0 to add, 1 to change, 0 to destroy.
analyse
  • ~ = ressource modifiée en dehors de Terraform
  • + = règle ajoutée manuellement (port 80, 0.0.0.0/0)
  • Risque : exposition Internet non autorisée
@Victorlanglois 7 / 13
exemple ansible

Config Nginx modifiée manuellement

commande de détection
$ ansible-playbook -i inventory/prod.ini webserver.yml --check --diff
output
TASK [Configure Nginx] ****
--- before: /etc/nginx/nginx.conf
+++ after: /etc/nginx/nginx.conf
@@ -12,7 +12,6 @@
     server {
-        add_header X-Custom-Header "manual-change";
         location / {

changed: [web01.example.com]

PLAY RECAP ****
web01.example.com  : ok=5  changed=1
@Victorlanglois 8 / 13
analyse ansible

Comprendre le diff

ce que le diff nous dit
  • changed=1 = dérive détectée sur 1 tâche
  • Le diff montre la ligne ajoutée manuellement
  • Si on applique le playbook, cette ligne sera supprimée
question clé
Cette modification était-elle intentionnelle ?
→ Si oui, mettez à jour le playbook. Si non, appliquez.
@Victorlanglois 9 / 13
stratégies

3 options de remédiation

Corriger
Dérive non autorisée,
faille de sécurité
terraform apply
Intégrer
Changement nécessaire
et permanent
Mettre à jour le code
Investiguer
Raison de la dérive
pas claire
Contacter l'équipe
@Victorlanglois 10 / 13
esprit critique

L'automatisation ne remplace pas le jugement

erreur bonne pratique
Corriger automatiquement tous les drifts Analyser avant d'agir (certains sont légitimes)
Ignorer les alertes de drift Traiter chaque alerte, ajuster les seuils
State local sans locking Backend distant obligatoire (S3, GCS)
Permissions console ouvertes IaC = seule voie autorisée
@Victorlanglois 11 / 13
sécurité

Risques à surveiller

risque mitigation
State exposé
Secrets en clair dans tfstate
Backend chiffré (S3 + KMS)
Jamais commiter .tfstate
ClickOps
Modifications manuelles en console
Principe d'infrastructure immuable
Console en read-only
Agent sur-privilégié
Permissions trop larges
RBAC strict
Accès Just-in-Time
@Victorlanglois 12 / 16
outils

Ce qui existe pour aller plus loin

driftctl
Open source
Spécialisé drift Terraform
argocd / flux
GitOps K8s
Réconciliation automatique
aws config
Native AWS
Détection drift intégrée

Ces outils complètent terraform plan et ansible --check pour des cas avancés.

@Victorlanglois 13 / 16
checklist

Sécuriser votre processus

infrastructure
☐ Backend distant chiffré pour le state
☐ Locking activé (DynamoDB)
accès
☐ Console en read-only
☐ Moindre privilège pour agents

À valider avant de mettre en place la détection automatisée.

@Victorlanglois 14 / 16
à retenir

Vos 3 points clés

1
détecter
terraform plan et ansible --check révèlent les dérives silencieuses
2
décider
Corriger, Intégrer ou Investiguer selon le contexte
3
humain
L'agent alerte, vous gardez le contrôle sur les décisions
@Victorlanglois 15 / 16
← cours 0804 · détection de drift

Maintenant qu'on détecte les dérives...

Comment automatiser la génération de PR pour corriger les dérives détectées ?

→ cours 0805 · correctifs via pr
@Victorlanglois 16 / 16