# Incident Response Process — Scope

> **Document de travail.** Brouillon commercial à relire par un avocat IT et RGPD avant signature. Aucune valeur contractuelle en l'état.

**Version** : v1 — 2026-05-24
**Référentiels** : **ISO/IEC 27035** (gestion des incidents de sécurité de l'information) + **RGPD articles 33-34** (notification de violation à la CNIL sous 72h et aux personnes concernées si risque élevé).
**Éditeur** : Amir KELLOUSIDHOUM AE, SIRET 917 709 024 00017
**Contact incident** : [security@getscope.dev](mailto:security@getscope.dev)
**Contact DPO** : [dpo@getscope.dev](mailto:dpo@getscope.dev)

---

## 1. Périmètre

Le présent document décrit la procédure de réponse aux incidents applicable à toute anomalie affectant la disponibilité, l'intégrité ou la confidentialité du service Scope, ainsi qu'aux violations de données à caractère personnel au sens du RGPD article 4 §12.

## 2. Détection

Les incidents sont détectés par les canaux suivants, par ordre d'autorité :

### 2.1 Monitoring automatique
- **GlitchTip** (DigitalOcean Frankfurt, résidence UE) : capture des erreurs runtime serveur + browser + edge. Alerting configuré sur :
  - Erreurs critiques (5xx serveur, exceptions non gérées).
  - Augmentation soudaine du taux d'erreurs (>10× la baseline horaire).
  - Latence P95 et P99 anormales (>3× la baseline 24h).
- **Audit logs Postgres** : triggers append-only qui détectent les comportements anormaux (échecs d'authentification en série, accès `service_role` hors fenêtres autorisées).
- **Stripe webhooks** : monitoring des `event.type` en échec (signature invalide, idempotence non respectée).
- **DocuSeal webhooks** : monitoring des échecs de signature électronique.

### 2.2 Uptime check externe

Solution cible : UptimeRobot (free tier ou plan payant selon volumétrie) ou Pingdom pour les contrats Enterprise, en ping HTTPS toutes les 5 minutes sur les endpoints publics. La page de statut publique `status.getscope.dev` consolidera ces checks externes — sa mise en place est planifiée comme prérequis avant tout contrat Enterprise mentionnant un SLA contractuel.

### 2.3 Signalement utilisateur
- **Formulaire support** sur [https://getscope.dev/contact](https://getscope.dev/contact).
- **Email direct** : [support@getscope.dev](mailto:support@getscope.dev) (support standard), [security@getscope.dev](mailto:security@getscope.dev) (sécurité), [dpo@getscope.dev](mailto:dpo@getscope.dev) (données personnelles).
- **Signalement responsable de vulnérabilité (security.txt)** : voir [https://getscope.dev/.well-known/security.txt](https://getscope.dev/.well-known/security.txt) — endpoint RFC 9116 servi en production, pointant sur `security@getscope.dev` et `dpo@getscope.dev`.

### 2.4 Signalement par sous-traitant
- Notification reçue d'un sous-traitant (Supabase, Railway, Gladia, etc.) suite à un incident de leur côté. Voir [`./subprocessors.md`](./subprocessors.md) pour les contacts DPO/sécurité de chaque sous-traitant.

## 3. Triage et sévérité

Tout incident est classé selon la grille suivante dans les **30 minutes** suivant la détection :

| Sévérité | Critères | Exemples |
|---|---|---|
| **S1 — Critique** | Perte de données client, exposition de PII, blocage total du service, faille de sécurité exploitable, suspicion de fuite de credentials. **Risque de violation RGPD article 33-34**. | Base Postgres compromise, RLS contournée, credentials Stripe leaked, fichier client servi à mauvais tenant. |
| **S2 — Majeur** | Fonctionnalité critique dégradée affectant > 25 % des utilisateurs actifs, latence inacceptable (>10s P95 sur écran principal), un sous-traitant majeur en panne (Supabase, Railway, OpenRouter). | Pipeline LLM indisponible (OpenRouter down), exports PDF qui timeout, login impossible. |
| **S3 — Mineur** | Fonctionnalité secondaire dégradée, bug visible mais workaround simple, indisponibilité ponctuelle (<5 min) sans impact data. | UI bug sur un graphique, refresh manuel nécessaire, edge case rare. |

Le **fondateur seul** (Amir Kellou Sidhoum) effectue le triage en phase Découverte/PoC. Une dérogation S2→S1 est possible si l'ampleur est ré-évaluée. Toute requalification est tracée dans l'audit log interne.

## 4. Escalation

### 4.1 Sévérité S1 (critique)

| Étape | Délai max | Action |
|---|---|---|
| Détection → confirmation | **30 min** | Vérification manuelle du founder (logs GlitchTip + audit_logs Postgres + reproduction si possible). |
| Confirmation → containment | **2 h ouvrées** | Mesures de containment : isolation du sous-système concerné, désactivation feature flag, rotation des credentials suspectées, blocage IP si attaque. |
| Containment → DPO notification interne | **24 h** | Notification interne à Amir Kellou Sidhoum agissant aussi en qualité de DPO. Cf. [`./dpa-template.md`](./dpa-template.md) Art. 5 §7. |
| Containment → notification CNIL (si violation données personnelles) | **72 h** | Notification CNIL via formulaire [https://www.cnil.fr/fr/notifier-une-violation-de-donnees-personnelles](https://www.cnil.fr/fr/notifier-une-violation-de-donnees-personnelles), en application du RGPD art. 33. |
| Containment → notification Client | **24 h** | Email à tous les administrateurs des organisations potentiellement affectées, via Resend (`security@getscope.dev`). Cf. §5. |
| Containment → notification personnes concernées (si risque élevé) | **Sans délai indu** | RGPD art. 34 : information directe des personnes concernées (collaborateurs, contacts cités dans les briefs) si risque élevé pour leurs droits et libertés. |
| Résolution → post-mortem | **7 jours** | Document public ou semi-public (cf. §6). |

### 4.2 Sévérité S2 (majeur)

- **Confirmation** sous 1 h ouvrée.
- **Containment** sous 4 h ouvrées.
- **Notification Client** sous 24 h ouvrées si l'incident perdure.
- **Post-mortem interne** sous 7 jours, public si pertinent.

### 4.3 Sévérité S3 (mineur)

- **Confirmation** sous 1 jour ouvré.
- **Correction** sous 7 jours ouvrés (selon priorité produit).
- **Pas de notification systématique**, sauf demande du Client.

## 5. Communication Client

### 5.1 Email transactionnel

Envoyé via **Resend** (`security@getscope.dev` ou `incident@getscope.dev`). Contenu minimum :
- Nature de l'incident (sans détails techniques sensibles).
- Données potentiellement concernées (catégories, ampleur).
- Mesures de containment prises.
- Mesures que le Client doit prendre (rotation des sessions, vérification audit_logs, etc.).
- Délai estimé de résolution.
- Point de contact unique pour les questions : [security@getscope.dev](mailto:security@getscope.dev).
- Date et heure de la prochaine mise à jour.

### 5.2 Status page

Mise à jour de `status.getscope.dev` (à créer — voir §2.2) :
- État du service (vert / orange / rouge).
- Incidents en cours et résolus.
- Historique post-mortems.

### 5.3 Téléphone (S1 uniquement, contrats Enterprise)

Pour les contrats Enterprise ayant signé une **clause astreinte**, le founder appelle directement le contact admin déclaré au contrat. **Aucun engagement téléphonique pendant la phase Découverte/PoC** (cf. [`./slo-decouverte-poc.md`](./slo-decouverte-poc.md) §3).

## 6. Post-mortem

### 6.1 Périmètre
- **S1** : post-mortem public dans les 7 jours, publié sur `status.getscope.dev` et/ou envoyé par email aux administrateurs.
- **S2** : post-mortem interne dans les 7 jours, publié si pertinent (impact public, leçon transférable).
- **S3** : pas de post-mortem systématique, mais entrée dans le journal d'incidents interne.

### 6.2 Template

Tout post-mortem suit cette structure :

```markdown
# Post-mortem — [Titre court de l'incident]

**Date** : [YYYY-MM-DD]
**Sévérité** : [S1 / S2 / S3]
**Durée** : [détection → résolution]
**Impact** : [nombre d'organisations affectées, nature de l'impact, données concernées]

## Timeline (UTC)
- HH:MM — Détection (canal de détection)
- HH:MM — Confirmation S[1/2/3] par [responsable]
- HH:MM — Containment : [actions prises]
- HH:MM — Notification Client envoyée
- HH:MM — Résolution
- HH:MM — Notification de résolution envoyée

## Root cause
[Description technique honnête : ce qui a causé l'incident, sans euphémismes.]

## Impact
[Quantification précise : combien de tenants, combien de rows, quelles tables, quelles données.]

## Mesures correctives (déjà appliquées)
- [Action 1 avec commit SHA si applicable]
- [Action 2]

## Mesures préventives (à appliquer)
- [Action future avec deadline]
- [Action future avec deadline]

## Retour d'expérience
[Ce qui a bien marché. Ce qui a manqué. Ce qui doit changer dans le process.]
```

### 6.3 Honnêteté radicale

Scope s'engage à publier des post-mortems **honnêtes**, sans euphémismes ni dilution de responsabilité. Si la cause est une erreur de code, elle est nommée. Si la cause est un sous-traitant, elle est nommée. Si la cause est une mauvaise pratique opérationnelle du founder, elle est nommée.

## 7. Astreinte

| Phase | Couverture | Engagement | Conditions |
|---|---|---|---|
| **Découverte / PoC** | Aucune astreinte formelle. Réponse "best effort" en heures ouvrées 9h-18h CET jours ouvrés FR. | Pas de SLA téléphonique. Email uniquement. | Phase pré-contractuelle. |
| **Contrat PoC payant** | Couverture 9h-19h CET jours ouvrés FR. | Email + appel si S1, sous 1h. | Avenant SLA inclus au contrat PoC. |
| **Contrat Enterprise** | Couverture 24/7/365. | Numéro d'astreinte téléphonique dédié. | Contrat Enterprise grand compte avec budget astreinte. |

**Pendant la phase Découverte/PoC, le founder est seul.** Si un incident S1 se produit hors heures ouvrées, la réponse est limitée par sa disponibilité physique. Cette limite est explicitée pour ne pas créer d'engagement inopposable.

## 8. Notification de violation à la CNIL (RGPD art. 33)

En cas de **violation de données à caractère personnel** susceptible d'engendrer un risque pour les droits et libertés des personnes concernées :

1. **Délai** : notification à la CNIL dans les **72 heures** au plus tard à compter de la prise de connaissance.
2. **Forme** : formulaire en ligne CNIL [https://www.cnil.fr/fr/notifier-une-violation-de-donnees-personnelles](https://www.cnil.fr/fr/notifier-une-violation-de-donnees-personnelles).
3. **Contenu minimum** (RGPD art. 33 §3) :
   - Nature de la violation, catégories de personnes et de données concernées, nombre approximatif de personnes affectées.
   - Coordonnées du DPO ([dpo@getscope.dev](mailto:dpo@getscope.dev)).
   - Conséquences probables de la violation.
   - Mesures prises ou proposées pour remédier à la violation et atténuer ses conséquences.
4. **Information du Client (Responsable de traitement)** : sans délai, conformément à [`./dpa-template.md`](./dpa-template.md) Art. 5 §7.

Si la notification CNIL n'a pas lieu dans les 72 h, la justification du retard est documentée pour traçabilité.

## 9. Notification aux personnes concernées (RGPD art. 34)

Lorsque la violation est susceptible d'engendrer un **risque élevé** pour les droits et libertés des personnes concernées, Scope, en concertation avec le Client (Responsable de traitement), communique aux personnes concernées **sans délai indu** :
- Nature de la violation.
- Coordonnées du DPO Scope ([dpo@getscope.dev](mailto:dpo@getscope.dev)).
- Conséquences probables.
- Mesures prises ou proposées.

## 10. Journal des incidents

Scope tient un **journal des incidents** interne (table `incidents` Postgres + post-mortems en repo Git). Le journal inclut :
- ID incident, date, sévérité, durée.
- Lien vers le post-mortem.
- Mesures correctives appliquées (avec commit SHA).
- Mesures préventives (avec deadline).

Ce journal peut être communiqué sur demande dans le cadre d'un audit RSSI / DPO Client, en application de [`./dpa-template.md`](./dpa-template.md) Art. 9.

À la date du présent document, **aucun incident S1 ni violation de données personnelles n'a été enregistré** depuis le lancement du service. Ce statut est tenu à jour.

---

## Renvois utiles

- **SLO Découverte/PoC** : [`./slo-decouverte-poc.md`](./slo-decouverte-poc.md)
- **DPA Scope** : [`./dpa-template.md`](./dpa-template.md) Art. 5 §7 (obligation 72h)
- **Subprocessors** : [`./subprocessors.md`](./subprocessors.md) (contacts DPO sous-traitants)
- **Exit Plan** : [`./exit-plan.md`](./exit-plan.md)
- **Architecture data-flow** : [`./architecture-data-flow.md`](./architecture-data-flow.md)
- **CNIL — notifier une violation** : [https://www.cnil.fr/fr/notifier-une-violation-de-donnees-personnelles](https://www.cnil.fr/fr/notifier-une-violation-de-donnees-personnelles)

---

*Document `incident-response.md` v1 — 2026-05-24 — à relire par avocat IT/RGPD avant signature. Référentiels ISO 27035 + RGPD art. 33-34.*
