Évaluations & Projet Certifiant : M2 DevOps - Mise en Application DevOps¶
Établissement : Sup de Vinci Promotion : Mastère DevOps — M2 (Session 2026-2027) Titre RNCP : RNCP 40165 - Bloc 5 (option) : Piloter l'alignement stratégique entre architectures et DevSecOps Contribution certifiante : Synthèse technique « Mise en œuvre d'une plateforme sécurisée » pour le Dossier écrit individuel du Bloc 5 (MSPR 4.1). Volume horaire : 35 heures (5 journées de 7 heures)
Modalités Globales de Validation & Barème¶
L'évaluation de ce module valorise à la fois l'appropriation personnelle des concepts d'ingénierie et la capacité à construire, éprouver et défendre en équipe une plateforme de production, preuves à l'appui :
pie title Répartition de la note finale du module (100%)
"QCM Individuel Wayground (40 questions)" : 50
"Projet Certifiant & Soutenance (trinôme, avec audit croisé)" : 50 | Épreuve | Format | Durée | Pondération | Objectif pédagogique |
|---|---|---|---|---|
| 1. QCM Individuel (Wayground) | En ligne (individuel) | 40 min | 50% (/20) | Vérifier l'acquisition personnelle des concepts vus en cours et en TP. |
| 2. Projet Certifiant & Soutenance | Trinôme (3 étudiants) | 25 min | 50% (/20) | Construire, durcir et éprouver une plateforme de production, puis prouver en direct sa résistance à une panne et la remédiation automatique. |
1. Guide de l'Évaluation QCM (50%)¶
Informations Pratiques sur l'Épreuve
- Date de passage : Jour 5 au matin
- Plateforme : Wayground (un code d'accès vous sera fourni par l'intervenant).
- Durée : 40 minutes
- Format : 40 questions (25 à choix unique et 15 à choix multiples / Checkbox dont 10 à deux réponses et 5 à trois réponses), de 30 à 60 secondes par question.
- Conditions : Épreuve individuelle, sans documents ni accès externe.
Philosophie de l'Épreuve¶
Ce questionnaire évalue vos réflexes d'ingénieurs Platform, SRE et DevSecOps face aux décisions qui font qu'une plateforme tient en production, et non votre capacité à réciter une documentation.
L'objectif est de valider votre maîtrise personnelle :
- Du pilotage d'une usine logicielle sécurisée et du contrôle des changements (B5C1).
- Des stratégies de durcissement des machines et de l'orchestrateur selon les standards de l'industrie (B5C4).
- De la démonstration de la robustesse par le stress, la surcharge et l'injection de pannes (B5C3).
- De l'identification automatique des composants défaillants et des causes racines, et de la documentation d'exploitation.
Référentiel des 8 Domaines de Révision¶
Les questions portent sur 8 domaines techniques, directement issus des présentations et des TP du module :
1. Usine Logicielle Sécurisée & Contrôle des Changements
- Quality Gates pilotées par les risques : Registre des risques, chaîne de traçabilité risque → contrôle → preuve.
- Supply chain : Signature Cosign keyless (OIDC, Fulcio, Rekor), attestation SBOM, niveaux SLSA.
- Promotion immuable : Build once, deploy many, référence d'image par digest plutôt que par tag.
- Contrôle des changements : Branches protégées, merge par Merge Request, pipeline au vert obligatoire, approbations et CODEOWNERS.
- GitOps comme registre d'audit : Pourquoi l'historique du dépôt d'état désiré fait foi lors d'un audit.
2. Hardening as Code des Machines
- Référentiels : CIS Benchmarks (niveaux 1 et 2), guide ANSSI BP-028, lien avec la PSSI.
- Ansible : Idempotence,
--check --diffcomme détection de dérive,ansible-lint. - Gestion des écarts : Dérogations justifiées, tracées et compensées (cas de
net.ipv4.ip_forwardavec Docker et Kubernetes). - Pièges réels : Ports publiés par Docker qui contournent UFW, chaîne
DOCKER-USER. - Audit : Indice de durcissement Lynis, OpenSCAP et ComplianceAsCode, limites d'un score.
3. Hardening de l'Orchestrateur & Conformité
- Pod Security Admission : Standards
privileged,baselineetrestricted, modesenforce,auditetwarn. securityContext: Non-root, élévation de privilèges, capabilities, seccomp, système de fichiers en lecture seule.- NetworkPolicies : Patron default deny en entrée et en sortie, réouverture explicite du DNS.
- Policy as Code : Kyverno vs OPA Gatekeeper,
ValidatingPolicyetImageValidatingPolicy(Kyverno 1.19), actionsAuditetDeny. - Secrets : Pourquoi le base64 n'est pas un chiffrement, Sealed Secrets et SOPS.
- Audit de conformité :
kube-bench, Kubescape, matrice de conformité PSSI.
4. Observabilité Orientée SLO
- SLI, SLO, SLA : Savoir les distinguer sur un exemple concret.
- Error budget : Calcul du temps d'indisponibilité autorisé pour un objectif donné.
- Alerting par burn rate : Signification d'un burn rate, intérêt des fenêtres multiples, alertes sur symptômes plutôt que sur causes.
- Méthodes RED et USE : Signaux d'un service vs signaux d'une ressource.
- Probes : Rôles respectifs de
liveness,readinessetstartup.
5. Robustness Testing - Stress & Surcharge
- Types de tests : Charge nominale, stress, pic, endurance, et ce que chacun révèle.
- Thresholds k6 : Traduction des SLO en critères de réussite, code de retour en CI,
abortOnFail. - Ressources Kubernetes : Throttling CPU vs OOMKill, classes QoS et ordre d'éviction.
- Élasticité : Fonctionnement et délais du HPA, dépendance aux requests.
- PodDisruptionBudget : Ce qu'il protège (interruptions volontaires) et ce qu'il ne protège pas.
6. Chaos Engineering
- Principes : Hypothèse d'état stable, rayon d'impact, conditions d'arrêt, GameDay.
- Chaos Mesh : Choisir le bon type d'expérience (
PodChaos,NetworkChaos,StressChaos,HTTPChaos). - Perte de nœud : Tolérances
not-readyetunreachablepar défaut, répartition des réplicas. - SPOF : Identifier un point de défaillance unique, le corriger et rejouer l'expérience.
7. Auto-remédiation & Causes Racines
- Couches de self-healing : Contrôleurs Kubernetes,
selfHeald'ArgoCD, rollback automatique par Argo Rollouts etAnalysisTemplate. - Identification de la cause : Métriques kube-state-metrics (raison de terminaison, état d'attente), alertes portant
component,causeetrunbook_url. - Garde-fous : Moindre privilège du remédiateur, actions bornées et journalisées, humain dans la boucle.
8. Knowledge Management & Audit Croisé
- Documentation d'exploitation : Runbooks, ADR, postmortems blameless, docs-as-code.
- Audit croisé : Règles d'engagement, constats prouvés, sévérité et recommandation.
- Preuves certifiantes : Ce qu'il faut fournir pour valider la B5C3 dans le Dossier écrit du Bloc 5 (MSPR 4.1).
Conseils de Révision
- Repensez à vos manipulations en TP : plusieurs questions décrivent un comportement observé pendant la semaine (refus d'admission, OOMKill, délai de replanification après la perte d'un nœud, dérive corrigée par ArgoCD).
- Lisez attentivement l'intégralité des options : certaines réponses décrivent des pratiques répandues mais dangereuses en production (droits
cluster-adminpour un automate, chaos non annoncé en production, secret en base64 dans Git). - Gestion des questions à choix multiples (Checkbox) : 15 questions comportent plusieurs réponses valides (10 questions avec 2 réponses et 5 questions avec 3 réponses). L'énoncé indique explicitement le nombre de réponses attendues (« DEUX » ou « TROIS ») : cochez l'ensemble des bonnes options pour marquer les points.
- Privilégiez la posture SRE : la bonne réponse privilégie toujours la preuve mesurée, le moindre privilège et la réduction du rayon d'impact.
- Supports du cours : revoyez les slides et TP des parcours Sécuriser et durcir une plateforme et Resilience Engineering sur Kubernetes, ainsi que le cours Load testing avec Grafana k6.
2. Projet Certifiant & Soutenance Orale (50%)¶
Dépôts Officiels du Projet
Contexte Métier & Enjeux¶
Un an après l'industrialisation de sa pipeline CI/CD, SecurePay Solutions migre son API de paiement vers une plateforme conteneurisée. Le comité de direction a gelé la mise en production après une série d'incidents :
- Black Friday : deux heures d'indisponibilité sur saturation CPU, sans aucun mécanisme d'autoscaling.
- Perte d'un serveur : l'unique instance de l'API tournait sur le nœud tombé ; la reprise a été manuelle.
- Release défectueuse : une version renvoyant des erreurs 500 est restée 40 minutes en production, faute de rollback automatique.
- Diagnostic à l'aveugle : une heure d'investigation pour comprendre qu'un dépassement mémoire (OOMKill) était à l'origine de redémarrages en boucle.
- Audit PSSI défavorable : serveurs accessibles en SSH root par mot de passe, conteneurs exécutés en root, aucune politique d'admission, secrets en clair dans les manifests.
Votre Mission¶
En tant qu'équipe Platform & SRE, vous devez livrer une plateforme de production sécurisée par construction, durcie selon les standards de l'industrie, et dont la résistance aux pannes est démontrée par des preuves. Le comité ne lèvera le gel qu'au vu de ces preuves.
Chaque trinôme importe les deux dépôts de départ dans son groupe GitLab : le code applicatif d'une part, le squelette de la plateforme (bootstrap, structure GitOps, modèles de documentation) d'autre part :
git clone https://github.com/Momotoculteur/securepay-api.git
git clone https://github.com/Momotoculteur/securepay-platform.git
Architecture Cible¶
flowchart LR
DEV["Merge Request"] --> CI["Pipeline securepay-api\nGitleaks · Tests · SAST · Build\nTrivy · SBOM · DAST · Cosign"]
CI -->|"MR de promotion\n(digest signé)"| GITOPS["securepay-platform\n(état désiré)"]
GITOPS -->|"pull"| ARGO["ArgoCD"]
subgraph VM["VM securepay-prod (Ubuntu 24.04 durcie par Ansible)"]
subgraph K3D["Cluster k3d"]
ARGO --> KYV{"Admission\nPSA + Kyverno"}
KYV -->|"conforme et signé"| API["API SecurePay\nRollout + HPA + PDB"]
KYV -.->|"refusé"| REJ["Pod root, image non signée,\ntag latest"]
MON["Prometheus · Alertmanager · Grafana"] --> API
CHAOS["Chaos Mesh"] -.->|"pannes injectées"| API
end
end
K6["k6"] -->|"charge"| API
MON -->|"alerte composant + cause"| NOTIF["Notification\n+ diagnostic + runbook"] Spécifications Techniques Attendues¶
1. Usine Logicielle Sécurisée & Contrôle des Changements (Compétence B5C1)
- Registre des risques (
docs/risques.md) : au moins 8 risques STRIDE, chacun relié à un contrôle et à une preuve. Chaque Quality Gate de la pipeline doit être justifiée par un risque du registre. - Pipeline
securepay-api: détection de secrets bloquante, tests avec rapport JUnit et couverture, SAST avec Quality Gate bloquante, build multi-stage non-root avec BuildKit, scantrivy imagebloquant surCRITICALavec une image Trivy épinglée, SBOM CycloneDX, DAST ZAP sur l'API lancée en service CI. - Anomalies du dépôt de départ corrigées (
eval(), secret Stripe en dur et révoqué, dépendances vulnérables, en-têtes HTTP de sécurité). - Signature Cosign de l'image par son digest (keyless via OIDC GitLab, ou paire de clés dont la clé privée est stockée en variable Masked et Protected) et attestation du SBOM.
- Promotion GitOps : la pipeline ouvre une Merge Request sur
securepay-platformavec le nouveau digest ; aucune mise en production ne passe parkubectl. - Branches
mainprotégées sur les deux dépôts : push direct interdit, merge par MR uniquement, pipeline au vert obligatoire.
2. Hardening as Code des Machines (Compétence B5C4)
- VM
securepay-prodprovisionnée par cloud-init et durcie par un playbook Ansible versionné (ansible/), aligné sur le CIS Benchmark Ubuntu 24.04 niveau 1 et le guide ANSSI BP-028 : SSH, comptes et sudo, pare-feu,sysctl,auditd, mises à jour de sécurité automatiques, AppArmor, services inutiles désactivés. - Idempotence démontrée (deuxième exécution à
changed=0) et contrôle de dérive par--check --diff. ansible-lintexécuté dans la pipeline desecurepay-platform.- Audit Lynis avant/après avec indice de durcissement. Chaque recommandation non appliquée fait l'objet d'une dérogation justifiée (ex :
net.ipv4.ip_forwardrequis par Docker et Kubernetes) avec sa mesure compensatoire.
3. Hardening de l'Orchestrateur & Conformité PSSI (Compétence B5C4)
- Namespace applicatif en Pod Security Admission
restricted(enforce) etsecurityContextcomplet sur l'API. - NetworkPolicies en refus par défaut (entrée et sortie), avec des ouvertures explicites et justifiées.
- Kyverno déployé par ArgoCD, politiques bloquantes (action
Deny) : interdiction de root et du mode privilégié, requests/limits et probes obligatoires, taglatestinterdit, vérification de la signature des images. Politiques testées en CI (kyverno applysur les manifests rendus). - Aucun secret en clair dans Git (Sealed Secrets ou SOPS), y compris l'imagePullSecret du registre.
- Audits
kube-benchet Kubescape (outrivy k8s --compliance) avant/après. - Matrice de conformité PSSI (
docs/conformite.md) : exigence → contrôle → outil → preuve → statut.
4. Observabilité Orientée SLO (prérequis de la Compétence B5C3)
- API instrumentée (
prom-client) : débit, erreurs et latence par route et par code HTTP. - Probes
liveness,readinessetstartup, et arrêt propre surSIGTERM. - SLO formalisés et alertés : disponibilité 99,5 % et p95 < 300 ms sur les routes de paiement, alertes burn rate multi-fenêtres.
- Dashboard Grafana RED + error budget ; Alertmanager branché sur au moins un canal de notification.
5. Robustness Testing - Stress & Surcharge (Compétence B5C3)
- Scénarios k6 versionnés (
tests/robustness/) : charge nominale, stress par paliers jusqu'à la rupture, pic, endurance. Thresholds dérivés des SLO. - HPA (2 à 6 réplicas) et PDB : scale-out et retour à l'état nominal prouvés.
- Surcharge CPU et mémoire de la machine (
stress-ng) et d'un pod (limite mémoire trop basse puis redimensionnée). - Point de rupture mesuré : débit maximal tenu sous SLO, et goulot d'étranglement identifié.
6. Chaos Engineering - Injection de Pannes (Compétence B5C3)
- Chaos Mesh déployé par ArgoCD, ciblage restreint au namespace applicatif.
- Au moins 5 expériences versionnées (
chaos/) et jouées sous charge, couvrant obligatoirement : la perte de pods, la perte d'un nœud, la coupure d'un service critique, une dégradation réseau (latence ou perte) et un stress de ressources. - Pour chaque expérience : hypothèse d'état stable, condition d'arrêt, résultat mesuré, impact sur le SLO, preuve et action corrective.
- SPOF identifiés et corrigés (réplicas, répartition sur les nœuds,
tolerationSeconds).
7. Auto-remédiation & Causes Racines (critère RNCP : « L'automatisation identifie les composants défaillants et établit la cause principale de la défaillance »)
- Alertes qualifiant la cause (
OOMKilled,CrashLoopBackOff,ImagePullBackOff, réplicas indisponibles, nœudNotReady, HPA au maximum, burn rate) et portant les labelscomponentetcauseainsi qu'une annotationrunbook_url. - Rollback automatique d'une release défectueuse (Argo Rollouts canary avec
AnalysisTemplatePrometheus). - Réconciliation GitOps active (
selfHeal,prune) et dérive manuelle corrigée. - Diagnostic automatique joint à la notification (événements, derniers logs,
k8sgpt analyze). - Chaîne complète démontrée : panne → détection → cause identifiée → remédiation → retour au SLO, avec temps de rétablissement mesuré.
8. Documentation d'Exploitation (Knowledge Management)
README.mdd'exploitation : architecture, prérequis, bootstrap de bout en bout depuis un poste vierge.- Un runbook par alerte (
docs/runbooks/), exécutable par une personne extérieure à l'équipe. - Au moins un ADR (
docs/adr/) pour un choix structurant (ex : Kyverno vs Gatekeeper, Sealed Secrets vs SOPS). - Un postmortem blameless d'un incident simulé pendant le GameDay.
- Dossier de preuves (
docs/preuves/) : chaque preuve est nomméeAAAA-MM-JJ_HHMM_<scenario>.<ext>et indexée dansdocs/preuves/README.md(exigence, scénario, preuve, résultat).
Organisation des Dépôts Attendue¶
Le dépôt de départ securepay-platform fournit cette structure, un bootstrap fonctionnel et des marqueurs TODO [Jx] indiquant le travail attendu à chaque jalon.
securepay-platform/
├── README.md # Guide d'exploitation et bootstrap
├── bootstrap/ # cloud-init, création du cluster k3d, installation d'ArgoCD
├── ansible/ # Inventaire, rôles et playbook de durcissement
├── apps/ # Applications ArgoCD (app-of-apps)
├── charts/securepay-api/ # Chart Helm de l'API (Rollout, HPA, PDB, NetworkPolicies)
├── policies/ # Politiques Kyverno et tests associés
├── observability/ # Valeurs de la stack, PrometheusRules, dashboards
├── chaos/ # Expériences et Workflow Chaos Mesh
├── tests/robustness/ # Scénarios k6
└── docs/
├── risques.md # Registre des risques
├── conformite.md # Matrice de conformité PSSI
├── resilience.md # Rapport de résilience (stress, surcharge, chaos)
├── runbooks/
├── adr/
├── postmortems/
├── audit/ # Rapport d'audit croisé reçu
└── preuves/ # Dossier de preuves horodatées
Jalons du Projet¶
| Fin de | Jalon | Preuves attendues |
|---|---|---|
| J1 | Usine logicielle opérationnelle | Pipeline au vert, image signée, MR de promotion, application synchronisée par ArgoCD |
| J2 | Plateforme durcie | Lynis et kube-bench avant/après, refus d'admission capturés, matrice de conformité initiale |
| J3 | Robustesse mesurée | SLO alertés, résumés k6, captures Grafana du scale-out et de la surcharge, point de rupture |
| J4 | Résilience démontrée | Rapport GameDay, rollback automatique, alertes component/cause, runbooks |
| J5 | Audit & finalisation | Rapport d'audit croisé, remédiation des constats, tag v1.0.0, soutenance |
Livrables Attendus¶
Chaque trinôme doit fournir :
- Avant le jour 5 à 09h00 : les deux dépôts gelés au tag
v1.0.0-audit, accessibles en lecture à l'intervenant et au trinôme auditeur. - Avant le jour 5 à 13h30 :
- Les dépôts finaux au tag
v1.0.0: code, pipelines, Ansible, chart, politiques, expériences, scénarios k6 et documentation décrits ci-dessus. - Le dossier de preuves complet et indexé.
- Le rapport d'audit croisé rédigé sur la plateforme auditée, déposé par MR dans le dépôt de l'équipe auditée.
- La synthèse technique individuelle (3 à 5 pages PDF, une par étudiant) « Mise en œuvre d'une plateforme sécurisée », directement exploitable pour le Dossier écrit individuel du Bloc 5 (MSPR 4.1) : architecture, contrôles alignés sur les risques, stratégie de durcissement, preuves de robustesse (B5C3) et analyse des causes racines.
- Le support de soutenance : 8 à 10 slides synthétiques.
- Les dépôts finaux au tag
Audit Croisé Peer-to-Peer (Jour 5 - Matin)¶
Chaque trinôme audite la plateforme d'un autre trinôme (attribution circulaire communiquée en fin de jour 4), sur les dépôts gelés et en direct sur le poste de l'équipe auditée.
Règles d'engagement :
- Les actions se limitent au namespace applicatif et aux contrôles listés dans la grille ; aucune destruction de données, de VM ou de dépôt.
- L'équipe auditée est présente, et chaque action est annoncée puis tracée.
- Un constat sans preuve reproductible (commande, sortie, capture horodatée) n'est pas recevable.
Grille d'audit :
| Domaine | Vérification | Résultat attendu |
|---|---|---|
| Pipeline | Pousser une branche contenant un faux secret, puis une faille de code évidente | Pipeline bloquée, MR non fusionnable |
| Admission | Déployer un pod root, une image non signée, une image latest | Refus explicite à l'admission |
| Réseau | Joindre l'API depuis un pod d'un namespace non autorisé | Connexion refusée |
| RBAC | kubectl auth can-i --list pour les ServiceAccounts de l'application et du remédiateur | Droits minimaux, aucun accès aux secrets non nécessaires |
| Machine | Rejouer Lynis, tenter une connexion SSH root ou par mot de passe | Score conforme au dossier, connexion refusée |
| Résilience | Expérience de chaos choisie par les auditeurs et non annoncée | SLO tenu ou dégradation maîtrisée, alerte avec composant et cause |
| Documentation | Un auditeur exécute un runbook sans aide | Diagnostic et remédiation menés à terme |
Chaque constat est consigné avec sa sévérité (critique, majeure, mineure), sa preuve et une recommandation. L'équipe auditée remédie les constats critiques et majeurs avant 13h30, ou documente une dérogation argumentée.
Modalités de la Soutenance Orale (Jour 5 - Après-midi)¶
- Durée totale : 25 minutes par trinôme.
- 15 minutes de présentation et Démonstration Live :
- Présentation synthétique de l'architecture, des risques et des contrôles associés (5 min).
- Démonstration en direct (10 min) :
-
- Passage d'une modification de bout en bout : MR, pipeline, promotion, synchronisation ArgoCD.
-
- Scénario de panne sous charge : l'intervenant choisit une expérience dans le catalogue du trinôme et la déclenche pendant un test k6. Le trinôme doit prouver en direct que le SLO tient (ou se dégrade de façon maîtrisée), que l'alerte identifie le composant et la cause, et que la remédiation s'exécute.
-
- 10 minutes d'échanges techniques :
- Questions individuelles de l'intervenant sur les choix d'implémentation, les dérogations, les résultats de l'audit croisé et la conformité RNCP.
- 15 minutes de présentation et Démonstration Live :
Grille d'Évaluation & Barème (/20)¶
| Critère d'évaluation | Éléments vérifiés | Points |
|---|---|---|
| 1. Usine Logicielle & Contrôle des Changements (B5C1) | Quality Gates justifiées par le registre des risques, anomalies corrigées, signature et vérification à l'admission, promotion GitOps par MR, branches protégées. | / 3 pts |
| 2. Hardening as Code & Conformité (B5C4) | Playbook Ansible idempotent aligné CIS/ANSSI, dérogations justifiées, cluster durci (PSA, NetworkPolicies, Kyverno, secrets chiffrés), audits avant/après, matrice de conformité PSSI. | / 4 pts |
| 3. Robustness Testing - Stress & Surcharge (B5C3) | Scénarios k6 alignés sur les SLO, HPA et PDB prouvés, surcharges machine et pod, point de rupture mesuré, preuves horodatées. | / 3 pts |
| 4. Chaos Engineering & Preuves de Résilience (B5C3) | Au moins 5 expériences avec hypothèses et résultats, SPOF identifiés et corrigés, rapport de résilience. | / 3 pts |
| 5. Auto-remédiation & Causes Racines | Alertes qualifiant composant et cause, rollback automatique, réconciliation GitOps, diagnostic automatique, temps de rétablissement mesuré. | / 3 pts |
| 6. Audit Croisé & Knowledge Management | Pertinence et preuves du rapport d'audit produit, remédiation des constats reçus, runbooks exécutables, ADR, postmortem, dossier de preuves indexé. | / 2 pts |
| 7. Soutenance Orale & Démo Live | Clarté de la présentation, réussite du scénario de panne en direct, maîtrise technique lors des questions/réponses. | / 2 pts |
| TOTAL | Note globale du projet de mise en application | / 20 pts |
Modulation individuelle : la note de groupe est modulée de ± 2 points par étudiant selon ses réponses aux questions individuelles, sa contribution visible dans l'historique Git et la qualité de sa synthèse technique individuelle.
Bonus (plafonnés à + 2 points, note finale plafonnée à 20)¶
| Bonus | Description | Points |
|---|---|---|
| Remédiation pilotée par alerte | Webhook Alertmanager déclenchant une action corrective bornée (Argo Events et Workflows, Robusta ou remédiateur maison) avec un ServiceAccount au moindre privilège | + 1 |
| Détection runtime | Falco déployé avec une règle personnalisée déclenchée et notifiée en démonstration | + 1 |
| Reprise après sinistre | Sauvegarde et restauration Velero testées, avec temps de restauration mesuré | + 1 |