feat: sprint 6 — engagement export (md/csv/pdf) #9
16
SPEC.md
16
SPEC.md
@@ -40,7 +40,21 @@ L'instanciation d'un template dans un engagement crée une **nouvelle simulation
|
||||
**RBAC templates = ressource Red Team uniquement** : admin et redteam les gèrent (CRUD). SOC n'a aucun accès (pas de nav link, tous endpoints templates retournent 403). Les nouveaux noms de templates sont uniques pour la clarté UX du dropdown d'instanciation.
|
||||
|
||||
## Export d'engagement
|
||||
Un engagement peut être exporté à tout moment dans 3 formats au choix : **Markdown** (handoff narratif), **CSV** (machine-readable, intégration tableurs), **PDF** (livrable client). L'export contient l'en-tête de l'engagement et toutes ses simulations avec les champs Red Team **et** SOC. Endpoint unique : `GET /api/engagements/<id>/export?format=md|csv|pdf`. Réservé aux rôles admin et redteam (livrable RedTeam, cohérent avec le RBAC Templates). Filename normalisé : `engagement-<id>-<slug>-YYYYMMDD.<ext>`.
|
||||
Un engagement peut être exporté à tout moment dans 3 formats au choix : **Markdown** (handoff narratif), **CSV** (machine-readable, intégration tableurs), **PDF** (livrable client). Endpoint unique : `GET /api/engagements/<id>/export?format=md|csv|pdf`. Réservé aux rôles admin et redteam (livrable RedTeam, cohérent avec le RBAC Templates). Filename normalisé : `engagement-<id>-<slug>-YYYYMMDD.<ext>`.
|
||||
|
||||
**Schéma fixe à 7 colonnes** (en-têtes français) pour tous les formats — une ligne par simulation :
|
||||
|
||||
| # | Colonne | Source |
|
||||
|---|---|---|
|
||||
| 1 | Scénario | `simulation.name` |
|
||||
| 2 | Test | `simulation.description` |
|
||||
| 3 | Source de log | `simulation.log_source` |
|
||||
| 4 | Commentaires SOC | `simulation.soc_comment` |
|
||||
| 5 | Exécution | concat multi-ligne sans labels, ordre fixe : `executed_at` → `commands` → `execution_result` |
|
||||
| 6 | Logs remontés au SIEM | `simulation.logs` |
|
||||
| 7 | Cyber incident | `simulation.incident_number` |
|
||||
|
||||
CSV : exactement 1 ligne d'en-tête + 1 ligne par simulation. Markdown : en-tête engagement (name, dates, status, created_by) puis une table de 7 colonnes. PDF : même structure que le Markdown rendue via HTML→PDF (WeasyPrint). Le statut de la simulation, les techniques/tactiques MITRE, les prerequisites et les métadonnées (id, created_at) ne sont PAS exportés — l'export est un handoff focalisé RT↔SOC, pas un dump complet.
|
||||
|
||||
Prévoir un module d'authentification : dans un premier temps local à la bdd.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user