Chapitre 9 -- Procedures operationnelles¶
Statut du chapitre : DRAFT Derniere mise a jour : 2026-02-26 Contract : CC-09 | Story : PD-249
9.1 Exploitation quotidienne¶
L'exploitation du SAE ProbatioVault repose sur une supervision continue des composants critiques : services applicatifs, infrastructure de stockage, modules cryptographiques et chaine de preuve. L'objectif est de detecter toute degradation avant qu'elle n'affecte la disponibilite ou l'integrite probatoire du systeme.
Stack de monitoring¶
Le systeme de supervision repose sur une stack open-source unifiee, deployee sur l'infrastructure OVH (VPS DEV : 51.68.126.160) :
| Composant | Role | Acces |
|---|---|---|
| Prometheus 2.x | Collecte de metriques (scrape toutes les 30 s) | https://prometheus.dev.probatiovault.com |
| Grafana 10.x | Visualisation, tableaux de bord et alertes | https://grafana.dev.probatiovault.com |
| Node Exporter | Metriques systeme (CPU, RAM, disque, reseau) | Port 9100 |
| Loki | Centralisation des logs structures (prevu, cf. Ch. 10) | -- |
| Jaeger | Tracing distribue des flux critiques (prevu, cf. Ch. 10) | -- |
Le Node Exporter utilise un textfile collector (/var/lib/node_exporter/textfile_collector/) permettant d'exposer des metriques personnalisees (resultats de tests d'integration, indicateurs metier) sans modification du code applicatif.
Indicateurs cles de performance (KPI)¶
Les indicateurs suivants constituent le socle minimal de surveillance du SAE. Chaque indicateur est associe a un seuil d'alerte qui declenche une notification vers les canaux de communication de l'equipe d'exploitation.
| Indicateur | Description | Seuil nominal | Seuil d'alerte | Source |
|---|---|---|---|---|
| Disponibilite API | Taux de reponses HTTP 2xx sur l'API backend NestJS | >= 99.9 % | < 99.5 % sur 5 min | Prometheus (health check) |
| Latence P95 | Temps de reponse au 95e percentile des requetes API | < 200 ms | > 500 ms sur 5 min | Prometheus (histogram) |
| Taux d'erreur | Proportion de reponses HTTP 5xx sur l'ensemble des requetes | < 0.1 % | > 1 % sur 5 min | Prometheus (counter) |
| Espace stockage OVH S3 | Volume utilise sur le bucket HOT (documents-hot) | Variable | > 80 % quota | CloudWatch / Prometheus |
| Espace stockage Glacier | Volume archive dans les buckets COLD (Paris + Frankfurt) | Variable | Croissance > 20 %/mois | CloudWatch (BucketSizeBytes) |
| Taux de replication CRR | Proportion d'objets repliques Paris vers Frankfurt dans le SLA de 15 min | 100 % | < 99 % sur 1 h | CloudWatch (ReplicationLatency) |
| Sante PostgreSQL | Connexions actives, transactions par seconde, taille WAL | Nominal | Connexions > 80 % pool | Prometheus (pg_exporter) |
| Sante Redis | Memoire utilisee, latence commandes, longueur des files BullMQ | Nominal | Memoire > 80 %, latence > 10 ms | Prometheus (redis_exporter) |
| Sante HSM | Disponibilite du cluster CloudHSM, latence des operations cryptographiques | Operationnel | Indisponible > 30 s | CloudWatch (HSM metrics) |
| Integrite probatoire | Resultats des verifications d'integrite periodiques (PD-251, en cours) | 0 ecart | >= 1 ecart detecte | Module d'integrite (Q1 2026) |
Tableaux de bord Grafana¶
L'equipe d'exploitation dispose de tableaux de bord dedies dans Grafana, organises par domaine :
- Dashboard Infrastructure : metriques systeme (CPU, RAM, disque, reseau), sante des services (PostgreSQL, Redis, NGINX, Node.js), etat des certificats TLS.
- Dashboard Stockage : volumes OVH S3 et AWS Glacier, taux de replication CRR, objets sous Object Lock, couts estimes mensuels.
- Dashboard API : latence par endpoint, taux d'erreur, debit de requetes, distribution des codes HTTP.
- Dashboard Tests d'integration : resultats des suites de tests automatises, taux de succes, historique des executions (via textfile collector).
- Dashboard Audit et Conformite (prevu) : metriques de conformite operationnelle, evenements d'audit, alertes de securite.
Alertes et notifications¶
Les alertes Prometheus sont configurees selon trois niveaux de severite :
| Severite | Critere | Canal de notification | Delai de reaction cible |
|---|---|---|---|
| Critique | Service indisponible, perte de donnees potentielle, HSM injoignable | PagerDuty + Slack #incidents | < 15 min |
| Avertissement | Degradation de performance, seuil de capacite approche, erreur de replication | Slack #monitoring | < 1 h |
| Information | Maintenance planifiee, mise a jour deployee, rotation de cle effectuee | Slack #operations | Prise de connaissance |
Les alertes critiques declenchent un cycle d'astreinte avec escalade automatique si aucune prise en charge n'est enregistree dans le delai cible.
9.2 Maintenance et mises a jour¶
La maintenance du SAE couvre quatre domaines principaux : la rotation des cles cryptographiques, le renouvellement des certificats, l'application des correctifs de securite et la mise a jour des dependances logicielles. Chaque operation est tracee dans la piste d'audit append-only (cf. Ch. 7).
9.2.1 Rotation des cles HSM¶
La rotation des cles de signature HSM est une operation planifiee qui garantit le renouvellement periodique du materiel cryptographique sans interruption de service. Le mecanisme de key wrapping permet une rotation transparente pour les utilisateurs.
| Parametre | Valeur | Justification |
|---|---|---|
| Frequence de rotation | Tous les 12 mois (K_master HSM) | Conformite NIST SP 800-57, bonne pratique cryptographique |
| Algorithme de wrapping | AES-KWP (256 bits) | NIST SP 800-38F, cles jamais exportees du HSM |
| Cle de signature | RSA-PSS 4096 bits | PKCS#1 v2.1, non exportable |
| Retention des anciennes cles | Conservation en lecture seule pour verification des signatures anterieures | Continuite de la chaine de preuve |
Procedure de rotation K_master HSM :
- Preparation : Generer la nouvelle cle (
pv-master-signing-YYYY) dans le cluster CloudHSM. Le prefixepv-master-*identifie les cles de production ; les cles ephemeres de test utilisent le prefixepv-test-*. - Basculement : Mettre a jour la reference de cle active dans HashiCorp Vault (
kv/app/hsm-config). Le backend lit dynamiquement la cle active a chaque operation de signature. - Verification : Effectuer une signature de test et verifier la chaine complete (signature + horodatage + verification).
- Archivage : L'ancienne cle passe en mode lecture seule dans le HSM. Elle reste disponible pour verifier les signatures emises pendant sa periode d'activite.
- Trace : L'evenement de rotation est journalise dans la piste d'audit avec les metadonnees : identifiant cle precedente, identifiant nouvelle cle, date, operateur.
La rotation des cles utilisateur (K_master_user) suit un mecanisme different, decrit au chapitre 3 : le changement de mot de passe re-chiffre l'enveloppe du keystore sans modifier les cles de derivation documentaire (K_doc), evitant ainsi tout re-chiffrement des archives.
9.2.2 Renouvellement des certificats TSA¶
L'horodatage qualifie repose sur un service TSA (Time Stamping Authority) conforme RFC 3161. Les certificats TSA ont une duree de validite limitee et doivent etre renouveles avant expiration.
| Parametre | Valeur |
|---|---|
| Autorite TSA | Prestataire conforme RFC 3161 (evolution eIDAS qualifie prevue Q2-Q3 2026) |
| Duree de validite | Variable selon prestataire (generalement 1 a 3 ans) |
| Delai de renouvellement | 30 jours avant expiration |
| Verification de la chaine de confiance | Automatique a chaque renouvellement |
Procedure de renouvellement :
- Surveillance : Un job planifie verifie mensuellement la date d'expiration du certificat TSA actif.
- Renouvellement : Obtenir le nouveau certificat aupres du prestataire TSA et verifier la chaine de confiance (certificat racine, intermediaires).
- Deploiement : Mettre a jour le certificat dans la configuration backend (HashiCorp Vault, chemin
kv/app/tsa-config). - Validation : Emettre un jeton d'horodatage de test et verifier la validite de la reponse TSA.
- Continuite : Les jetons d'horodatage emis avec l'ancien certificat restent valides tant que le certificat etait valide au moment de l'emission.
9.2.3 Correctifs de securite¶
Les correctifs de securite sont appliques selon un calendrier guide par la criticite des vulnerabilites identifiees.
| Criticite (CVSS) | Delai d'application | Procedure |
|---|---|---|
| Critique (>= 9.0) | 48 heures | Patch d'urgence, deploiement hors cycle |
| Haute (7.0 -- 8.9) | 7 jours | Deploiement dans le prochain cycle de maintenance |
| Moyenne (4.0 -- 6.9) | 30 jours | Integration dans le sprint en cours |
| Basse (< 4.0) | 90 jours | Planification au backlog |
Principes directeurs :
- Les correctifs sont d'abord appliques sur l'environnement de staging, puis deployes en production apres validation du pipeline CI/CD (lint, tests, Sonar).
- Aucun correctif n'est applique directement en production sans passage par le pipeline automatise.
- Chaque correctif est documente dans le changelog de l'infrastructure (Terraform/Ansible) ou du backend (NestJS).
- Les Quality Gates Sonar ne sont jamais contournees : si un patch introduit une regression, le code est corrige, pas les regles.
9.2.4 Mise a jour des dependances¶
La gestion des dependances logicielles suit un processus de verification continu.
| Domaine | Outils | Frequence de verification |
|---|---|---|
| Backend NestJS | npm audit, Dependabot (GitLab) | Hebdomadaire |
| Infrastructure | Terraform providers, Ansible roles | Mensuelle |
| Monitoring | Prometheus, Grafana, Node Exporter | Trimestrielle |
| HSM | Firmware CloudHSM (AWS managed) | Selon disponibilite AWS |
Regle de compatibilite : Les mises a jour de dependances sensibles (cryptographie, ORM, framework) font l'objet d'une revue dediee avant integration. Les dependances ESM-only identifiees sont documentees dans le plan d'implementation de chaque story pour eviter les incompatibilites de runtime.
9.3 Gestion des incidents¶
La gestion des incidents SAE suit un processus structure en cinq phases, concu pour minimiser l'impact sur la disponibilite et l'integrite probatoire du systeme. Chaque incident est documente dans un rapport post-mortem et les enseignements sont integres dans les procedures operationnelles.
9.3.1 Classification des incidents¶
Les incidents sont classes selon deux axes : la severite (impact sur le service) et la nature (domaine fonctionnel affecte).
Severite :
| Niveau | Designation | Critere | Exemple |
|---|---|---|---|
| S1 | Critique | Perte d'integrite probatoire, compromission cryptographique, perte de donnees | Corruption d'un objet WORM, cle HSM compromise |
| S2 | Majeur | Indisponibilite totale d'un service critique, degradation severe | API inaccessible, pipeline de scellement bloque |
| S3 | Significatif | Degradation partielle, impact limite sur certains utilisateurs | Latence elevee, echec de replication CRR temporaire |
| S4 | Mineur | Anomalie sans impact fonctionnel immediat | Alerte faux positif, metrique temporairement absente |
Nature :
| Domaine | Composants concernes | Referent technique |
|---|---|---|
| Cryptographie | HSM, chaine de preuve, chiffrement, horodatage | Responsable securite |
| Stockage | OVH S3, AWS Glacier, replication CRR, Object Lock | Responsable infrastructure |
| Application | API backend, authentification, audit trail | Responsable backend |
| Infrastructure | Reseau, VPN, DNS, serveurs, base de donnees | Responsable infrastructure |
9.3.2 Procedure de reponse aux incidents¶
La procedure de reponse suit cinq phases sequentielles. La traçabilite de chaque phase est assuree par la piste d'audit append-only et par les rapports post-mortem archives.
Diagramme : Procedure de gestion d'incident SAE¶
graph TB
DET["Detection<br/>Alertes Prometheus / Grafana"]
CLA["Classification<br/>Severite S1-S4 + Domaine"]
CON["Confinement<br/>Isolation du composant affecte"]
ERA["Eradication<br/>Correction de la cause racine"]
RES["Restauration<br/>Retour au service nominal"]
POST["Post-mortem<br/>Rapport + enseignements"]
VER["Verification integrite<br/>Controle chaine de preuve"]
DET --> CLA
CLA --> CON
CON --> ERA
ERA --> RES
RES --> VER
VER --> POST
style DET fill:#e8f5e9,stroke:#2e7d32,color:#000
style CLA fill:#fff3e0,stroke:#ef6c00,color:#000
style CON fill:#fce4ec,stroke:#c62828,color:#000
style ERA fill:#fce4ec,stroke:#c62828,color:#000
style RES fill:#e3f2fd,stroke:#1565c0,color:#000
style VER fill:#f3e5f5,stroke:#6a1b9a,color:#000
style POST fill:#e0f2f1,stroke:#00695c,color:#000 Legende : Le diagramme illustre la sequence de traitement d'un incident SAE, depuis la detection automatisee jusqu'au post-mortem. La phase de verification d'integrite est specifique au contexte probatoire : elle garantit qu'aucune archive n'a ete alteree pendant l'incident.
Phase 1 -- Detection :
- Les alertes Prometheus et les tableaux de bord Grafana constituent la premiere ligne de detection.
- Les logs structures (format JSON, horodates UTC) fournissent le detail des evenements.
- Les utilisateurs peuvent signaler un incident via le canal Slack dedie ou par escalade directe.
- Delai cible de detection : < 5 min pour les incidents S1/S2 (alertes automatisees).
Phase 2 -- Classification :
- L'operateur d'astreinte evalue la severite (S1 a S4) et identifie le domaine fonctionnel.
- Pour les incidents S1 (integrite probatoire), l'escalade vers le responsable securite est immediate et obligatoire.
- Un identifiant unique d'incident est cree et un canal de communication dedie est ouvert (Slack thread ou bridge).
Phase 3 -- Confinement :
- Isoler le composant defaillant pour empecher la propagation de l'impact.
- En cas de compromission cryptographique suspectee : revocation immediate de la cle concernee dans le HSM et suspension des operations de signature.
- En cas d'indisponibilite stockage : activation du mode degrade (file d'attente des operations en base PostgreSQL, reprise automatique apres retour du service).
Phase 4 -- Eradication :
- Identifier et corriger la cause racine (patch, configuration, rollback).
- Toute correction suit le pipeline CI/CD standard : lint, tests, Sonar, deploiement staging puis production.
- Aucune modification directe en production n'est autorisee hors du pipeline.
Phase 5 -- Restauration et verification :
- Retour au service nominal et verification que tous les indicateurs KPI sont dans les seuils.
- Verification specifique SAE : controle d'integrite des archives (empreintes SHA3-256, etat Object Lock, statut de replication CRR).
- Confirmation que la piste d'audit est complete et coherente pour la periode de l'incident.
Post-mortem :
Chaque incident S1 ou S2 fait l'objet d'un rapport post-mortem structure :
| Section | Contenu |
|---|---|
| Chronologie | Sequence des evenements avec horodatage UTC |
| Cause racine | Analyse technique de l'origine de l'incident |
| Impact | Composants affectes, duree d'indisponibilite, donnees impactees |
| Mesures correctives | Actions realisees pour corriger et prevenir la recurrence |
| Enseignements | Ameliorations des procedures, alertes ou architectures |
Les rapports post-mortem sont archives dans la piste d'audit append-only et sont accessibles aux auditeurs dans le cadre des controles de conformite.
9.3.3 Matrice d'escalade¶
| Severite | Premiere prise en charge | Escalade niveau 2 | Escalade direction |
|---|---|---|---|
| S1 | Operateur d'astreinte (imm.) | Responsable securite (< 15 min) | Direction technique (< 30 min) |
| S2 | Operateur d'astreinte (imm.) | Referent domaine (< 30 min) | Direction technique (< 2 h) |
| S3 | Equipe exploitation (< 1 h) | Referent domaine (< 4 h) | Sur demande |
| S4 | Equipe exploitation (J+1) | -- | -- |
9.4 Plan de continuite et de reprise d'activite (PCA/PRA)¶
Le plan de continuite du SAE ProbatioVault s'appuie sur l'architecture multi-cloud (OVH + AWS) pour garantir la resilience face aux scenarios de panne. La conception du stockage hybride (cf. Ch. 4) fournit une fondation naturelle pour le basculement et la restauration.
9.4.1 Objectifs de continuite¶
| Parametre | Cible | Justification |
|---|---|---|
| RTO (Recovery Time Objective) | 4 heures | Basculement OVH vers AWS pour les operations de lecture ; restauration des services applicatifs sur infrastructure secondaire |
| RPO (Recovery Point Objective) | 0 (zero perte de donnees) | Replication synchrone S3 CRR Paris vers Frankfurt (SLA 15 min) ; journalisation PostgreSQL continue |
| Duree maximale tolerable d'interruption | 8 heures | Au-dela, impact significatif sur les obligations de conservation legales et sur les SLA clients |
9.4.2 Scenarios de panne et strategies de basculement¶
Scenario 1 -- Panne OVH S3 (stockage actif) :
| Aspect | Detail |
|---|---|
| Impact | Uploads impossibles, lectures depuis OVH impossibles |
| Duree estimee | SLA OVH 99.9 % soit jusqu'a 43 min/mois |
| Strategie | Basculement en lecture sur AWS S3 (objets repliques via CRR). Les uploads sont mis en file d'attente (PostgreSQL + BullMQ) et rejoues automatiquement au retour d'OVH. |
| RTO effectif | < 5 min (basculement automatique pour les lectures) |
Scenario 2 -- Panne AWS S3 (stockage COLD + compliance) :
| Aspect | Detail |
|---|---|
| Impact | Replication WORM impossible, journaux d'audit non ecrivables |
| Duree estimee | SLA AWS 99.99 % soit jusqu'a 4 min/mois |
| Strategie | Les journaux d'audit sont temporairement stockes en base PostgreSQL. Synchronisation vers AWS au retour du service. Pas d'impact utilisateur direct (lectures depuis OVH HOT). |
| RTO effectif | Transparent pour les utilisateurs |
Scenario 3 -- Panne complete OVH (VPS + S3) :
| Aspect | Detail |
|---|---|
| Impact | API backend, base de donnees, stockage actif indisponibles |
| Strategie | Basculement vers AWS : deploiement du backend sur EC2 (eu-west-3), restauration PostgreSQL depuis le dernier backup quotidien (OVH S3 backups), acces aux archives via Glacier. |
| RTO effectif | < 4 h (deploiement backend + restauration DB) |
| RPO effectif | Dernier backup PostgreSQL (quotidien, complement WAL si disponible) |
Scenario 4 -- Panne regionale AWS Paris (eu-west-3) :
| Aspect | Detail |
|---|---|
| Impact | Stockage COLD Paris indisponible, journaux d'audit inaccessibles |
| Strategie | Basculement geographique vers Frankfurt (eu-central-1). Le bucket replica archives-frankfurt-dev contient l'integralite des archives WORM repliquees. L'Object Lock COMPLIANCE est replique. |
| RTO effectif | < 1 h (repointing DNS + configuration bucket Frankfurt) |
| RPO effectif | 0 (CRR replication continue avec SLA 15 min) |
9.4.3 Restauration depuis Glacier Deep Archive¶
La restauration d'archives depuis Glacier Deep Archive est une operation couteuse en temps et en cout, reservee aux scenarios de reprise apres sinistre ou aux demandes ponctuelles de restitution.
| Parametre | Valeur |
|---|---|
| Classe de stockage | DEEP_ARCHIVE |
| Delai de restauration (Standard) | 12 heures |
| Delai de restauration (Bulk) | 48 heures |
| Cout de restauration | ~0.02 USD/Go |
| Duree de mise a disposition | Configurable (1 a 30 jours) |
Procedure de restauration :
- Identification : Identifier les objets a restaurer via les metadonnees en base PostgreSQL (UUID document, cle S3, version).
- Demande de restauration : Emettre une requete
RestoreObjectsur le bucket Glacier (Paris ou Frankfurt selon le scenario). - Attente : Le delai de restauration depend du tier choisi (Standard : 12 h, Bulk : 48 h).
- Recuperation : Une fois l'objet temporairement disponible en S3 Standard, le telecharger et le placer dans le bucket HOT OVH.
- Verification : Verifier l'integrite du document restaure par comparaison de l'empreinte SHA3-256 avec la valeur enregistree en base.
- Nettoyage : La copie temporaire en S3 Standard expire automatiquement selon la duree configuree.
9.4.4 Tests du plan de continuite¶
Le plan de continuite fait l'objet de tests reguliers pour valider l'operationnalite des procedures de basculement.
| Type de test | Frequence | Contenu |
|---|---|---|
| Test de basculement lecture OVH vers AWS | Semestriel | Simulation panne OVH, verification acces aux archives via Glacier |
| Test de restauration Glacier | Annuel | Restauration de 10 documents representatifs, verification d'integrite |
| Test de restauration PostgreSQL | Trimestriel | Restauration du backup le plus recent sur un environnement isole |
| Revue du plan PCA/PRA | Annuel | Mise a jour des procedures, verification des contacts d'escalade, revision des RTO/RPO |
9.4.5 Resilience des composants critiques¶
Le tableau ci-dessous synthetise les mecanismes de resilience de chaque composant SAE :
| Composant | Mecanisme de resilience | Localisation |
|---|---|---|
| Documents archives | Replication CRR Paris vers Frankfurt, Object Lock COMPLIANCE replique | AWS eu-west-3 + eu-central-1 |
| Journaux d'audit | Object Lock COMPLIANCE 50 ans, append-only, copie temporaire PostgreSQL en cas de panne | AWS eu-west-3 |
| Cles HSM | Cluster CloudHSM multi-AZ, cles non exportables, backup AWS automatique | AWS eu-west-3 |
| Base de donnees PostgreSQL | Backup quotidien vers OVH S3 (retention 30 jours), WAL archiving | OVH GRA + OVH S3 |
| Configuration et secrets | HashiCorp Vault avec backend de stockage durable | OVH VPS DEV |
| Code source et IaC | Depot GitLab avec historique complet, pipeline CI/CD automatise | GitLab SaaS |
9.5 Synthese des procedures¶
Le tableau ci-dessous recapitule les procedures operationnelles avec leur frequence et leur responsable :
| Procedure | Frequence | Responsable | Trace |
|---|---|---|---|
| Surveillance des indicateurs KPI | Continue (scrape 30 s) | Equipe exploitation (supervision automatisee) | Prometheus / Grafana |
| Rotation cle HSM K_master | Annuelle (12 mois) | Responsable securite | Piste d'audit append-only |
| Renouvellement certificat TSA | 30 jours avant expiration | Responsable securite | Piste d'audit append-only |
| Application correctifs critiques | < 48 h | Equipe exploitation | Pipeline CI/CD + changelog |
| Mise a jour dependances | Hebdomadaire (audit) / mensuelle (application) | Equipe developpement | Pipeline CI/CD + changelog |
| Test de basculement PCA/PRA | Semestriel | Equipe exploitation | Rapport de test archive |
| Test de restauration Glacier | Annuel | Equipe exploitation | Rapport de test archive |
| Test de restauration PostgreSQL | Trimestriel | Equipe exploitation | Rapport de test archive |
| Revue des procedures operationnelles | Annuelle | Direction technique | Document PUBLISHED |
| Exercice de gestion d'incident | Semestriel | Equipe exploitation | Rapport post-mortem |
References¶
- Architecture de stockage : Ch. 4 -- Stockage et immutabilite (PD-4, PD-5, PD-6)
- Modele cryptographique : Ch. 3 -- Modele de securite (PD-7, PD-8, PD-33, PD-34)
- Tracabilite : Ch. 7 -- Tracabilite et audit (PD-19, PD-37)
- Feuille de route observabilite : Ch. 10 -- Feuille de route (PD-196 EPIC monitoring)
- Sources infrastructure :
ProbatioVault-infra/docs/reference/infra/operations/,ProbatioVault-infra/docs/architecture/storage/ - Normes de reference : NIST SP 800-57 (rotation des cles), NIST SP 800-38F (key wrapping), RFC 3161 (horodatage), ISO 14641:2018 section 7 (exploitation du SAE), NF Z42-013:2020 section 8 (procedures d'exploitation)