Skip to main content

Documentation Index

Fetch the complete documentation index at: https://snakysec.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Matrice RPO / RTO formalisée

1. Objet

Document de référence formalisant les engagements RPO/RTO par actif, opposable contractuellement aux clients (annexes DPA) et à un auditeur externe (ANSSI, pentest, RFP). Cette matrice complète l’inventaire (02-asset-inventory.md) et la stratégie de sauvegarde (03-backup-strategy.md).

2. Définitions normatives

TermeDéfinitionSource
RPO (Recovery Point Objective)Quantité maximale de données acceptable à perdre, mesurée en temps. RPO 5min = perte max 5 min de donnéesISO 22301:2019 §3.34
RTO (Recovery Time Objective)Durée maximale acceptable entre la survenance d’un incident et la reprise du serviceISO 22301:2019 §3.35
MTPD (Maximum Tolerable Period of Disruption)Durée au-delà de laquelle l’impact métier devient inacceptable (faillite, rupture contrat, sanction)ISO 22301:2019 §3.20
WRT (Work Recovery Time)Temps post-RTO nécessaire pour valider que les données restaurées sont cohérentes et utilisablesPratique BCMS
Relation : RTO + WRT ≤ MTPD doit toujours être vérifié.

3. Engagements globaux plateforme

MétriqueEngagement V1Justification
RPO global5 minutespgbackrest WAL streaming continu
RTO global4 heurespgbackrest restore (~2h) + smoke (~30min) + buffer ops (~1h30)
WRT1 heureVérification chaîne Ed25519 + count critical tables + spot-check audits
MTPD12 heuresAu-delà : risque rupture contrat client + obligation notif CSIRT-FR
Cohérence : RTO 4h + WRT 1h = 5h ≤ MTPD 12h.

4. Matrice détaillée par actif

4.1 Actifs critiques (RPO ≤ 24h, RTO ≤ 2h)

ActifCriticitéRPORTOWRTSource recoveryRunbook
PostgreSQL dataCritique5 min2h30 minpgbackrest PITR01-restore-postgres-pitr.md
Audit log Ed25519 chainCritique5 min2h30 min (verify chain)Inclus PostgreSQLIdem
LogAnchor (Ed25519 sigs)Critique5 min2h15 min (verify sigs)Inclus PostgreSQLIdem
Vault secretsCritique24h1h30 minSnapshot raft + unseal02-restore-vault-from-snapshot.md
Shares Shamir VaultCritiqueN/A (offline)1h max (récup notaire = 30min)N/ATrustee notaire01-keyholders.md
Cert X.509 plateforme + clientsCritique24h1h15 minVaultIdem 02
ClientSecret AES-256-GCMCritique5 min2h15 minInclus PostgreSQL + clé VaultIdem 01
Comptes Entra (break-glass)CritiqueN/A (Microsoft SLA)30 minN/ACompte break-glass + KeePassN/A (responsabilité Microsoft)
DNS zone snakysec.comCritique30j1h15 minBackup mensuel YAML09-restore-dns.md

4.2 Actifs importants (RPO ≤ 24h, RTO ≤ 4h)

ActifCriticitéRPORTOWRTSource recoveryRunbook
Artifacts (audits JSON, GRC docs)Importante24h4h30 minrestic OVH/Scaleway04-restore-artifacts.md
Container images DockerImportanteN/A (registry)30 minN/ADocker registry GitLabN/A
Code source applicatifImportanteN/A (git)30 minN/AGit remote + miroirN/A
Worker BullMQ jobs en coursImportanteN/A (idempotents)30 minN/ARe-trigger après restart07-restore-redis-bullmq.md
TLS certs Let’s EncryptModéréeN/A15 minN/ARe-issue ACME automatique08-restore-tls-certs.md

4.3 Actifs faibles (récupération non critique)

ActifCriticitéRPORTOStratégie
Logs TraefikFaibleN/AN/ARégénérables, pas de backup nécessaire
AOF RedisFaibleN/AN/AJobs idempotents, restart à vide
Cache Next.jsFaibleN/AN/ARégénéré au démarrage
Sessions NextAuthFaibleN/A0 (déconnexion users acceptée)Re-login après restore

5. Scénarios composites

5.1 Scénario “VPS détruit” (datacenter HS, ransomware total)

ÉtapeDurée cibleAction
Détection0-15 minSentry alerte + monitoring uptime
Décision activation DR15-30 minDR Owner triage P1
Provisioning nouveau VPS OVH30 min - 1hOVH UI + bootstrap script
Bootstrap Docker stack1h - 1h30docker compose up -d, traefik ACME
Restore Vault (snapshot + unseal Shamir)1h30 - 2hProcédure runbook 02
Restore PostgreSQL (PITR)2h - 3h30Procédure runbook 01
Restore artifacts3h30 - 4hProcédure runbook 04 (parallèle si possible)
Smoke check + verify chain Ed255194h - 4h30Script smoke-after-restore.sh
Communication clients (notif partielle)4h30 - 5hEmail transactionnel
Reprise complète≤ 5hInférieur à MTPD 12h ✓

5.2 Scénario “Corruption table audit log” (suppression accidentelle, bug import)

ÉtapeDurée cibleAction
Détection0-10 minVerify chain quotidien échoue → lockdown
Triage10-20 minDR Owner identifie le seq cassé via UI integrity tab
Décision PITR20-30 minChoix target-time pré-corruption
Backup base actuelle30-45 minSnapshot avant restore (sécurité)
Restore PostgreSQL PITR45 min - 2hpgbackrest restore —target-time
Verify chain Ed255192h - 2h30verifyFullChain() doit passer
Reprise normale + audit log re-scellé2h30 - 3hLift lockdown
Reprise complète≤ 3hInférieur à MTPD 12h ✓

5.3 Scénario “Perte Vault uniquement” (corruption raft storage)

ÉtapeDurée cibleAction
Détection0-5 minVault sealed automatiquement, app down
Récupération snapshot5-15 minrestic restore latest
Vault operator raft snapshot restore15-30 minProcédure runbook 02
Unseal Shamir (3 shares Nicolas)30-45 min3 prompts interactifs
Restart app + re-init AppRole45 min - 1hCompose restart
Verify : login plateforme + 1 audit test1h - 1h15Smoke check fonctionnel
Reprise complète≤ 1h15Inférieur à MTPD 12h ✓

6. Engagements contractuels client

6.1 SLA contractualisable V1

Les CGU et DPA SnakySec V1 incluent les engagements suivants :
EngagementValeurMesure
Disponibilité plateforme (uptime)99.5% mensuelMonitoring uptime externe
RPO maximum garanti24hSauvegarde quotidienne minimum
RTO maximum garanti8h (vs 4h cible interne)Marge de sécurité contractuelle
Notification incident significatif client<4hEmail transactionnel + portail status
Notification breach data perso<24h (vs 72h CNIL)DPA RGPD art. 33
Marge de sécurité : engagements contractuels (RTO 8h) > cibles internes (RTO 4h) pour absorber imprévus (récupération enveloppe trustee, problème unseal, etc.) sans rupture contractuelle.

6.2 Pénalités

V1 : pas de pénalités contractuelles (négociation au cas par cas client par client). Phase 2 : grille de pénalités standard à formaliser (avoir prorata, exit assistance gratuite, etc.).

7. Limites et hors-périmètre

CasEngagement V1Justification
Catastrophe régionale (multi-DC OVH HS)Best effort, RTO 12-24hPas de multi-région V1, reconstruction manuelle
Acte malveillant interne (DR Owner compromis)Procédure trustee + mandataire SASU, RTO ouvertScénario gravissime, plan continuité humaine activé
Incompatibilité réglementaire post-mise en demeureSuspension service possibleConformité prime sur disponibilité
Force majeure (guerre, pandémie majeure, cyberattaque étatique généralisée)Best effortCas force majeure légale, exonération SLA

8. Mesure et amélioration continue

8.1 Métriques suivies

MétriqueSourceFréquence
Uptime plateformeMonitoring externe (UptimeRobot ou équivalent)Mensuel
Durée last backup PostgreSQLpgbackrest CLIQuotidien (smoke check)
Durée last backup Vaultrestic CLIQuotidien
Résultat dernier test restoredocs/dr/test-results/Trimestriel
Nombre incidents activant le plan DRPlatformAuditLog action dr.activateMensuel
Durée moyenne incident (MTTR)PlatformAuditLog start/endTrimestriel

8.2 Revue annuelle

Le DR Owner revoit cette matrice annuellement, ou immédiatement si :
  • Un test de restore dépasse le RTO cible
  • Un incident réel dépasse le RTO contractuel
  • Un changement architectural modifie significativement les volumétries
  • Une évolution réglementaire impose un RPO/RTO inférieur

9. Validation

VersionDateAuteurApprobateur
1.02026-04-26Nicolas SchiffgensNicolas Schiffgens