← Retour aux études de cas
Secteur public 2025 Client anonymisé

Sécurisation et migration K8s d'une fonderie publique

Le défi

Une plateforme métier critique pour la gestion de production, hébergée sur un VPS PHP/MySQL non patché depuis 2 ans. Score d'audit ANSSI initial très bas, exigence de souveraineté complète des données (industrie défense), et fenêtre de migration limitée à un week-end pour ne pas impacter la production.

La solution

Audit de sécurité approfondi, conception d'une architecture K3s on-premise sur deux sites avec réplication asynchrone, refonte de l'application en suivant les recommandations ANSSI (segmentation, chiffrement, journalisation), migration big-bang sur un week-end avec retour arrière préparé, formation de l'équipe IT interne et passage en GitOps avec ArgoCD.

Résultats

  • Migration réalisée en 32h cumulées sur un week-end, zéro perte de données
  • Score audit ANSSI passé de 42/100 à 88/100 en 4 mois
  • Souveraineté complète : 100% des données et compute sur infrastructure française auto-hébergée
  • Réduction de 70% du temps de déploiement applicatif (de 2h à 35 min)
  • Plan de continuité d'activité (PCA) testé trimestriellement avec bascule effective sur le site secondaire
  • Conformité RGPD documentée et validée par le DPO

Stack technique

  • K3s
  • Debian 12
  • Traefik
  • PostgreSQL 16
  • ArgoCD
  • Velero
  • WireGuard
  • Prometheus & Grafana
  • Loki
  • OPA Gatekeeper

Le contexte

Une fonderie publique de la défense, opérant en France, avec une plateforme métier critique pour le suivi de production : ordres de fabrication, traçabilité des coulées, contrôle qualité, reporting réglementaire. La plateforme tournait sur un VPS unique chez un hébergeur français, en PHP 7.4 (fin de support depuis novembre 2022) et MySQL 5.7 (idem).

Le contexte de criticité : une indisponibilité de plus de 4 heures bloque la production, ce qui se chiffre en dizaines de milliers d’euros par heure. La donnée est classifiée diffusion restreinte, ce qui impose une infrastructure 100% française, sans cloud public, et sans prestataire avec accès aux données métier.

L’audit initial

Trois semaines d’audit, livrables : 80 pages de constats. Les points saillants :

  • Application PHP en version EOL, avec 47 CVE non patchées
  • Base MySQL avec une connexion directe depuis Internet
  • Zéro stratégie de sauvegarde : un script bash sortait un mysqldump vers un dossier local, jamais externalisé
  • Authentification basée sur un cookie de session sans HttpOnly ni SameSite, et un mot de passe master partagé pour 11 utilisateurs
  • Aucun journal d’événements applicatif exploitable
  • Code source non versionné — la prod et la dernière copie sur le poste d’un développeur partaient en parallèle
  • Aucune procédure documentée

Score audit ANSSI initial selon la grille interne : 42/100.

La conception

L’architecture cible :

  • Cluster K3s 3 noeuds sur le site principal, hébergé sur un hyperviseur Proxmox interne
  • Cluster K3s 2 noeuds sur le site secondaire (à 80 km), pour la DR
  • Réplication asynchrone des données critiques via WireGuard + Velero schedules
  • PostgreSQL 16 en remplacement de MySQL, avec streaming replication
  • Traefik comme ingress, certs internes ACME via une PKI privée
  • ArgoCD pour le GitOps, avec un Gitea on-premise comme source de vérité
  • Velero vers un MinIO local (souveraineté oblige) avec rétention 90 jours

Les choix structurants :

  • Tout on-premise. Pas de cloud public, même français. Le client a validé le surcoût matériel pour la souveraineté complète.
  • GitOps strict. Aucune modification manuelle sur les ressources K8s, tout passe par PR Git avec review.
  • OPA Gatekeeper pour bloquer les déploiements non conformes (containers privilégiés, hostNetwork, namespace par défaut).

La migration

Une fenêtre de 48h le week-end, du vendredi soir 20h au dimanche soir 20h. Le plan :

Vendredi 20h-22h : freeze applicatif annoncé. Dernier dump MySQL. Conversion du dump MySQL → PostgreSQL via pgloader testée en amont.

Vendredi 22h - Samedi 6h : import des données dans la nouvelle PostgreSQL. Vérification de l’intégrité par checksums. 14M de lignes, 22 tables, 6 heures effectives de migration.

Samedi 6h - 18h : déploiement de la nouvelle application (refondue en PHP 8.2 avec Symfony 7, en gardant le schéma DB stable). Tests fonctionnels en parallèle de l’équipe métier qui valide les workflows critiques.

Samedi 18h - Dimanche 12h : bascule DNS, monitoring renforcé, support en astreinte. Aucun incident remonté.

Dimanche 12h - 20h : finalisation, documentation, débriefing avec la DSI cliente.

Le retour arrière était préparé : VPS legacy maintenu en lecture seule pendant 30 jours, scripts de bascule DNS automatisés. Il n’a jamais été déclenché.

Les améliorations sécurité

  • Authentification : refonte avec Keycloak interne, SSO SAML pour les utilisateurs Active Directory, 2FA obligatoire pour les administrateurs
  • Chiffrement : TLS 1.3 partout, base PostgreSQL chiffrée au repos (LUKS au niveau hyperviseur), backups Velero chiffrés via GPG
  • Journalisation : tous les événements applicatifs, système et réseau remontent vers Loki, avec rétention 1 an et alerting Grafana
  • Segmentation : VLAN dédié pour le cluster, ACL stricte entre les zones, accès admin via bastion SSH avec session recording
  • OPA Gatekeeper : 12 policies actives qui bloquent les configurations non conformes au déploiement

Score audit ANSSI à 4 mois : 88/100. Les points restants concernent des process (revue annuelle des accès, formation continue) plutôt que de la technique.

Le bilan

L’application qui tournait sur 1 VPS à 30 €/mois consomme désormais ~ 200 €/mois en infrastructure (matériel amorti sur 5 ans + énergie), mais offre :

  • Disponibilité contractuelle 99.9% mesurée
  • PRA testée et fonctionnelle
  • Conformité ANSSI et RGPD documentée
  • Capacité d’évolution sans dette technique pour les 5 prochaines années
  • Indépendance complète vis-à-vis de tout fournisseur tiers

L’équipe IT cliente (3 personnes) a été formée sur Kubernetes, ArgoCD et les bonnes pratiques GitOps. Elle opère désormais 90% du quotidien en autonomie. Notre rôle s’est repositionné sur l’expertise et les audits semestriels.

Un contexte similaire chez vous ?

En discuter avec nous →