Aller au contenu

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 :

  1. Preparation : Generer la nouvelle cle (pv-master-signing-YYYY) dans le cluster CloudHSM. Le prefixe pv-master-* identifie les cles de production ; les cles ephemeres de test utilisent le prefixe pv-test-*.
  2. 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.
  3. Verification : Effectuer une signature de test et verifier la chaine complete (signature + horodatage + verification).
  4. 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.
  5. 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 :

  1. Surveillance : Un job planifie verifie mensuellement la date d'expiration du certificat TSA actif.
  2. Renouvellement : Obtenir le nouveau certificat aupres du prestataire TSA et verifier la chaine de confiance (certificat racine, intermediaires).
  3. Deploiement : Mettre a jour le certificat dans la configuration backend (HashiCorp Vault, chemin kv/app/tsa-config).
  4. Validation : Emettre un jeton d'horodatage de test et verifier la validite de la reponse TSA.
  5. 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 :

  1. Identification : Identifier les objets a restaurer via les metadonnees en base PostgreSQL (UUID document, cle S3, version).
  2. Demande de restauration : Emettre une requete RestoreObject sur le bucket Glacier (Paris ou Frankfurt selon le scenario).
  3. Attente : Le delai de restauration depend du tier choisi (Standard : 12 h, Bulk : 48 h).
  4. Recuperation : Une fois l'objet temporairement disponible en S3 Standard, le telecharger et le placer dans le bucket HOT OVH.
  5. Verification : Verifier l'integrite du document restaure par comparaison de l'empreinte SHA3-256 avec la valeur enregistree en base.
  6. 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)