Journal d'exécution des exercices DR¶
Utilisez ce formulaire après chaque exercice DR trimestriel (Exercices 1–3 dans
dr-playbook.fr.md). Le journal signé est la preuve auditeur que les procédures de récupération ont été testées et que les RTO/RPO mesurés correspondent aux cibles. Sans ce journal, le playbook est du théâtre.Workflow :
- L'opérateur copie ce template dans un nouveau fichier
dr-drill-AAAA-T[1-4].mddansakko-confidential/dr-drills/(repo privé — les sorties d'exercice peuvent contenir des détails opérationnels).- Opérateur + témoin d'astreinte exécutent chaque exercice et remplissent le journal.
- Le responsable conformité co-signe en bas.
- Le PDF signé est attaché au trail d'audit (stockage à froid dans le bucket
akko-audit-coldavec rétention object-lock ≥ 7 ans).
En-tête¶
| Champ | Valeur |
|---|---|
| Date d'exercice | AAAA-MM-JJ HH:MM TZ |
| Trimestre | T1 / T2 / T3 / T4 — AAAA |
| Cluster | netcup-prod / aks-prod / eks-prod / scratch |
| Version AKKO | (depuis helm list -n akko) |
| Opérateur | nom + rôle |
| Témoin | nom + rôle (doit être une personne différente) |
| Responsable conformité | nom + rôle |
| Révision du playbook | SHA git de docs/docs/admin/dr-playbook.md |
Exercice 1 — PITR base unique¶
Voir playbook §4.1. Restaurer une DB PostgreSQL à un point dans le temps 5 min avant « maintenant ». DB de référence :
superset_metadata.
| Étape | Cible | Mesuré | Réussite | Notes |
|---|---|---|---|---|
| Localiser le dernier backup de base | < 5 min | __ min | ☐ ☐ | |
| Restaurer sur PVC scratch | < 15 min | __ min | ☐ ☐ | |
| Rejouer WAL jusqu'à T-5 | < 5 min | __ min | ☐ ☐ | |
| Vérifier nombre de lignes attendu | < 1 min | __ s | ☐ ☐ | |
| Bascule du Service vers la DB restaurée | < 5 min | __ min | ☐ ☐ | |
| RTO total | 20 min | __ min | ☐ ☐ | |
| RPO mesuré | 5 min | __ s | ☐ ☐ |
Problèmes rencontrés (le cas échéant) :
Actions à mener (lien vers tickets backlog) :
Exercice 2 — restauration cluster complet sur matériel scratch¶
Voir playbook §4.2. À partir d'un cluster k8s neuf, restaurer tout le namespace AKKO depuis Velero + ObjectStorage. RTO cible : 4 h.
| Étape | Cible | Mesuré | Réussite | Notes |
|---|---|---|---|---|
| Provisionner cluster scratch (k3s sur matériel cold-spare) | < 30 min | __ min | ☐ ☐ | |
| Installer cert-manager + Traefik + Velero | < 15 min | __ min | ☐ ☐ | |
velero restore create depuis le dernier backup |
< 90 min | __ min | ☐ ☐ | |
| Restaurer les volumes SeaweedFS depuis snapshot | < 60 min | __ min | ☐ ☐ | |
helm upgrade akko pour réconcilier l'état |
< 15 min | __ min | ☐ ☐ | |
| Vérifier cockpit + Trino + ADEN répondent | < 5 min | __ min | ☐ ☐ | |
| Lancer le smoke banking-end-to-end (chemin lecture seule) | < 10 min | __ min | ☐ ☐ | |
| RTO total | 4 h | __ h __ min | ☐ ☐ | |
| RPO mesuré | 24 h (dernier nightly) | __ h | ☐ ☐ |
Composants n'ayant pas restauré proprement (le cas échéant) :
Le trail d'audit (decision_logs, query_log, admin_events) a-t-il restauré intact et tamper-free ? ☐ Oui ☐ Non — explique :
Exercice 3 — réponse à incident sur table¶
Voir playbook §4.3. Pas de changement d'infra — c'est un exercice papier où l'équipe d'astreinte parcourt la réponse à un incident nommé. Le témoin note la clarté + vitesse de chaque participant.
Scénario choisi (un parmi) :
- ☐ A1 : DB active perdue (corruption stockage)
- ☐ A2 : Ransomware chiffre les volumes SeaweedFS
- ☐ A3 : Realm Keycloak effacé (erreur admin)
- ☐ A4 : Panne cloud niveau région (provider down)
- ☐ A5 : Menace interne — un admin exfiltre le log d'audit
- ☐ A6 : Personnalisé — décrire :
| Phase | Propriétaire | Time-to-action | Observé |
|---|---|---|---|
| Détection (alerte / signalement utilisateur) | Monitoring | < 5 min | __ |
| Triage (sévérité + périmètre) | Astreinte | < 10 min | __ |
| Communication (Slack #incidents) | Astreinte | < 2 min | __ |
| Décision de containment | Lead sécurité | < 15 min | __ |
| Démarrage de la récupération (quel exercice déclenché) | Opérateur | < 30 min | __ |
| Cadence des status updates | All-hands | toutes les 30 min | __ |
| Déclaration all-clear | Conformité | fin de MTTR | __ |
| Post-mortem dans les 7 j | Auteur TBD | sous 7 j | __ |
Manques ou hésitations observés (transparence — le post-mortem est la sortie de l'exercice, pas le verdict sur l'équipe) :
Évolutions de processus relevées :
Spot-checks système de backup (à lancer AVANT l'exercice 1)¶
# PostgreSQL — dernier basebackup doit avoir < 4 h
kubectl -n akko exec svc/akko-postgresql -- ls -lt /backups/ | head
# Velero — dernier backup réussi
velero backup get --selector akko.scope=full | head -5
# Snapshot volume SeaweedFS — dernier snapshot
kubectl -n akko exec deploy/akko-seaweedfs-master -- \
weed shell <<< 'volume.list' | grep -E 'snapshot.*[0-9]+'
# Stockage à froid d'audit — object-lock toujours actif
aws s3api get-object-lock-configuration \
--bucket akko-audit-cold | jq '.ObjectLockConfiguration.Rule.DefaultRetention'
# cert-manager — cert wildcard pas expirant < 30 j
kubectl -n cert-manager get certificate -o json | \
jq '.items[] | {name: .metadata.name, expiry: .status.notAfter}'
Reportez toute anomalie ci-dessus avant la section exercice — un état de backup dégradé doit être capturé même si les exercices eux-mêmes réussissent.
Signatures¶
| Rôle | Nom | Signature (initiales) | Date |
|---|---|---|---|
| Opérateur | |||
| Témoin | |||
| Responsable conformité |
Conservation — stocker le PDF signé en stockage à froid avec rétention object-lock ≥ 7 ans (DORA Art. 11 + RGPD Art. 30 registre des traitements). La révision git du playbook utilisé pour cet exercice (enregistrée dans l'En-tête) permet aux auditeurs futurs de prouver que les procédures effectivement exécutées correspondent aux procédures documentées à l'époque.