Retour au parcours

Etude de cas — Automatisation & securite

Patcher 21 serveurs hybrides chaque semaine sans y penser : Ansible, tiering et supervision de bout en bout

Comment j'ai industrialise la gestion des mises a jour de securite d'un parc hybride Windows/Linux dans Azure — de l'inventaire raisonne a l'automatisation hebdomadaire planifiee, avec supervision complete et modele de securite par tiering.

21
serveurs (14 Windows, 7 Linux) patches chaque semaine
0
incident d'annuaire : DC patches un par un, replication verifiee
1
email d'alerte, uniquement quand quelque chose ne va pas
365 j
de metriques historisees pour chaque campagne

Le contexte

Un organisme de formation professionnelle multi-sites heberge dans Azure un parc hybride d'une vingtaine de serveurs : 14 Windows Server (controleurs de domaine, infrastructure, applications metier, supervision) et 7 Linux Ubuntu (supervision, GitLab, syslog, ITSM, proxys de sauvegarde). Les mises a jour de securite etaient appliquees manuellement, sans tracabilite ni garantie de couverture.

Objectif : un processus automatise, reproductible et observable — qui respecte les contraintes fortes du parc : controleurs de domaine a patcher un par un, ordre BDD-avant-App pour l'application metier, CA racine hors ligne a ne jamais demarrer, fenetres de sauvegarde a eviter.

La demarche

  1. 01

    Inventaire raisonne du parc, exclusions comprises

    J'ai recense l'ensemble des serveurs repartis sur plusieurs sous-reseaux Azure, avec ouverture NSG au strict necessaire : SSH et WinRM uniquement depuis le controleur Ansible, vers les seuls sous-reseaux concernes. J'ai exclu explicitement du perimetre : les equipements de securite reseau du constructeur (firmware gere via leur console dediee), la CA racine de la PKI interne — qui doit rester hors ligne, un patching automatise la demarrerait — et une VM metier via --limit. Savoir ce qu'on ne patche pas est aussi important que ce qu'on patche.

  2. 02

    Installation non intrusive du controleur

    Ansible installe dans un virtualenv Python isole sur un serveur mutualise qui heberge deja la pile de supervision (Prometheus, Grafana, InfluxDB, Nginx, PostgreSQL) — sans toucher au Python systeme ni aux services existants. Wrappers dans le PATH, arborescence propre : inventaire, group_vars, playbooks, scripts, logs, backups.

  3. 03

    Modele de securite avant le premier playbook

    Application du modele de tiering Microsoft : compte de service Tier 0 reserve aux controleurs de domaine et serveurs sensibles, compte Tier 1 pour le reste, comptes locaux dedies pour les serveurs hors domaine — chacun avec sa politique de mot de passe (PSO) dediee. Tous les secrets chiffres dans un vault Ansible AES256, un mot de passe become individuel par serveur Linux, gestion des caracteres speciaux via le tag YAML !unsafe. Cle SSH Ed25519, controleur sans IP publique.

  4. 04

    Orchestration phasee avec garde-fous

    Un playbook maitre execute cinq phases dans un ordre impose : Linux d'abord (par moities), puis les controleurs de domaine strictement un par un (serial: 1) avec verification de la replication AD, des roles FSMO et des services NTDS/DNS avant et apres chaque patch, puis l'infrastructure Windows, puis le couple metier dans l'ordre BDD-avant-App, et enfin les serveurs de supervision et de sauvegarde en dernier — pour qu'ils observent tout le reste. Chaque phase verifie l'espace disque et les services critiques avant et apres, avec reboot conditionnel uniquement si le systeme le demande.

  5. 05

    Culture du dry-run

    Aucune execution reelle sans --check prealable. Le mode check a d'ailleurs revele un piege documente : les taches shell y sont skippees, ce qui rendait certaines assertions dependantes indefinies — corrige par des gardes when: variable is defined. Les problemes rencontres sont consignes dans la documentation d'exploitation avec leur solution : doublon de vault et sa regle de precedence, serveur au nom trompeur qui n'est pas un controleur de domaine malgre les apparences, procedure de deverrouillage de compte.

  6. 06

    Automatisation planifiee via Semaphore UI

    Interface web au-dessus d'Ansible (Semaphore, adosse a PostgreSQL, derriere Nginx) avec des templates de taches distincts dry-run / execution reelle, et une planification cron hebdomadaire : Linux puis Windows chaque lundi soir, hors fenetres de sauvegarde. Subtilite de production documentee : le planificateur fonctionne en UTC, d'ou un decalage a anticiper au passage a l'heure d'ete.

  7. 07

    Chaine de supervision de bout en bout

    Un script Python (stdlib uniquement, zero dependance) interroge l'API de Semaphore apres chaque campagne, nettoie les codes couleur ANSI de la sortie Ansible, parse le PLAY RECAP par serveur et pousse les metriques dans InfluxDB v2 au format line protocol : statut, taches ok/changed/failed, paquets de securite disponibles, reboots, plus un resume global par execution (retention 365 jours). Un dashboard Grafana restitue le tout : statut global de la derniere campagne, serveurs en erreur avec seuils de couleur, detail par serveur, historique temporel.

  8. 08

    Alerting automatique en boucle fermee

    Regle d'alerte Grafana sur la metrique « serveurs en echec » : au moindre echec de patching, un email part automatiquement vers la boite de l'equipe exploitation via le relais SMTP de l'organisation, avec resolution automatique quand la metrique revient a zero. Personne n'a besoin d'aller verifier que le patching du lundi s'est bien passe — le systeme ne se manifeste que quand quelque chose ne va pas.

L'architecture

Schema d'architecture du patching automatiseChaine d'execution : Semaphore UI planifie chaque semaine les playbooks du controleur Ansible, qui patche en cinq phases ordonnees les serveurs Windows via WinRM et les serveurs Linux via SSH. Chaine d'observation : apres chaque campagne, un script Python interroge l'API de Semaphore, pousse les metriques dans InfluxDB, affichees dans Grafana, qui alerte l'equipe exploitation par email en cas d'echec.Semaphore UIcron hebdo, templatesdry-run / reelControleur Ansiblevirtualenv isole,vault AES256, sans IP publiqueWinRMSSH5 phases ordonneesServeurs Windows (14)DC en serial: 1, replication verifieeServeurs Linux (7)apt, reboot conditionnelapres chaque campagneScript PythonAPI Semaphore, PLAY RECAPInfluxDB v2metriques, 365 joursGrafanadashboard + regle d'alerteEmail exploitationuniquement en cas d'echec
Deux chaines : l'execution planifiee (Semaphore → Ansible → serveurs) et l'observation en boucle fermee (API → Python → InfluxDB → Grafana → email).

Les resultats

  • 21 serveurs (14 Windows, 7 Linux) patches automatiquement chaque semaine, en une fenetre planifiee, sans intervention manuelle
  • Controleurs de domaine patches un par un avec replication AD verifiee avant et apres — zero incident d'annuaire
  • Contraintes metier respectees par construction : ordre BDD-avant-App, supervision patchee en dernier, exclusions explicites (CA racine hors ligne preservee)
  • Une chaine d'observabilite complete : chaque campagne laisse des metriques historisees, un dashboard a jour et une alerte email uniquement en cas d'echec
  • Une documentation d'exploitation versionnee, incluant les pieges rencontres et leurs solutions — le processus survit a son auteur
  • Un socle reutilisable : ajouter un serveur au perimetre se resume a une entree d'inventaire, un secret dans le vault et un test unitaire

Competences mises en oeuvre

  • Ansible (playbooks multi-OS, vault AES256, serial, tags, dry-run)
  • WinRM / SSH
  • Windows Server & Active Directory (tiering T0/T1, PSO, replication, FSMO)
  • Linux/Ubuntu (apt, systemd, virtualenv)
  • Azure (NSG, segmentation reseau)
  • Semaphore UI (templates, planification cron)
  • Python (API REST, parsing, line protocol InfluxDB)
  • InfluxDB v2 & Grafana (dashboard, alerting, SMTP)
  • Gestion des secrets (vault, comptes de service dedies, Ed25519)
  • Methodologie (phases ordonnees, exclusions raisonnees, dry-run systematique, documentation des incidents)

Vos mises a jour meritent mieux qu'un lundi soir manuel

Inventaire, automatisation, tiering et supervision en boucle fermee : parlons de votre contexte.