Importer et exporter un scénario (format JSON)
Structure du fichier JSON attendu par l'éditeur de scénarios, règles à respecter et exemple complet prêt à adapter.
Dernière mise à jour Il y a 1 jour
L'éditeur de scénarios de PanicSafe permet d'importer et d'exporter un scénario au format JSON. C'est utile pour préparer un scénario hors de la plateforme, le réutiliser d'une organisation à l'autre ou partager un modèle entre partenaires.
Cet article décrit la structure exacte attendue par l'import, les règles à respecter et fournit un exemple complet.
Exporter un scénario
Allez dans Scénarios et ouvrez le scénario à exporter.
Cliquez sur Options, puis sur Exporter.
Le fichier
.jsonest téléchargé sur votre poste.
Astuce : le plus simple pour démarrer est d'exporter un scénario existant, par exemple l'un des scénarios prédéfinis de PanicSafe, et de le modifier. Vous partez ainsi d'un fichier dont la structure est forcément valide.
Importer un scénario
Allez dans Scénarios, puis créez un nouveau scénario ou ouvrez celui à remplacer.
Cliquez sur Options, puis sur Importer.
Sélectionnez votre fichier
.jsonet cliquez sur Ouvrir.Vérifiez le contenu chargé (nom, tâches, étapes), puis cliquez sur Mettre à jour le scénario pour enregistrer.
Structure du fichier
Le fichier est un objet JSON « à plat » : les champs ci-dessous sont placés directement au premier niveau, sans enveloppe supplémentaire.
Champs de premier niveau
Tâches (jobs)
Chaque tâche est identifiée par une clé unique (ex. evaluate_incident) et contient :
Étapes (steps)
Chaque étape est identifiée par une clé unique (ex. evaluate_scope) et contient :
Textes traduits
Les champs name et description ne sont pas de simples textes : ce sont des objets avec une entrée par langue. Renseignez au minimum la langue utilisée par votre organisation.
"name": {
"fr": "Évaluer l'incident",
"en": "Evaluate the incident"
}Exemple minimal
Un scénario avec deux tâches, dont la seconde dépend de la première :
{
"code": "mon-scenario",
"version": "v0",
"name": { "fr": "Mon scénario", "en": "My scenario" },
"description": { "fr": "Description du scénario", "en": "Scenario description" },
"jobs": {
"qualifier": {
"name": { "fr": "Qualifier l'incident", "en": "Qualify the incident" },
"description": { "fr": "Évaluer et qualifier l'événement", "en": "Assess and qualify the event" },
"placement": 1,
"dependsOn": [],
"steps": {
"evaluer_perimetre": {
"name": { "fr": "Évaluer le périmètre", "en": "Evaluate the scope" },
"description": { "fr": "Identifier les systèmes touchés", "en": "Identify affected systems" },
"priority": 1
},
"evaluer_impact": {
"name": { "fr": "Évaluer l'impact", "en": "Evaluate the impact" },
"description": { "fr": "Mesurer l'impact sur les activités", "en": "Assess the business impact" },
"priority": 2
}
}
},
"activer_cellule": {
"name": { "fr": "Activer la cellule de crise", "en": "Activate the crisis cell" },
"description": { "fr": "Mobiliser les parties prenantes", "en": "Mobilize stakeholders" },
"placement": 2,
"dependsOn": ["qualifier"],
"steps": {
"alerter_cellule": {
"name": { "fr": "Alerter la cellule de crise", "en": "Alert the crisis cell" },
"description": { "fr": "Notifier les membres de la cellule", "en": "Notify crisis cell members" },
"priority": 1
}
}
}
}
}Règles à respecter
Pas d'enveloppe :
code,version,name,descriptionetjobsdoivent être au premier niveau. Un fichier qui place le contenu dans un objetdefinitionouschema(format de l'API) n'est pas reconnu par l'import.Clés uniques : chaque clé de tâche et chaque clé d'étape doit être unique dans le fichier. Utilisez des minuscules, des chiffres et des tirets bas, sans espace ni accent (ex.
notify_insurance).Dépendances valides :
dependsOnne peut contenir que des clés de tâches présentes dans le même fichier.JSON valide : guillemets doubles uniquement, pas de virgule après le dernier élément d'une liste ou d'un objet, fichier encodé en UTF-8. En cas de doute, vérifiez votre fichier avec un validateur JSON avant l'import.
Nombres :
placementetprioritysont des nombres entiers, sans guillemets.
Dépannage
Il ne se passe rien après avoir cliqué sur « Ouvrir ». Le fichier n'a probablement pas été reconnu. Vérifiez dans l'ordre :
que le fichier est un JSON valide ;
que les champs sont bien au premier niveau, sans enveloppe
definitionouschema;que
versionest au formatv0,v1… ;que chaque tâche contient bien
name,description,placement,dependsOnetsteps.
Si le problème persiste, exportez un scénario existant et comparez sa structure avec votre fichier, ou contactez le support.
Glossaire
Exemple complet : attaque par rançongiciel
Voici un scénario complet de 6 tâches et 37 étapes, bilingue français / anglais. Copiez-le dans un fichier .json pour l'importer tel quel ou l'adapter à votre organisation.
{
"code": "ransomware-attack",
"version": "v1",
"name": { "en": "Ransomware Attack", "fr": "Attaque Ransomware" },
"description": {
"en": "Methodology for qualifying, containing, investigating, and resolving a ransomware attack, covering IT environments, legal reporting, and return to normal operations",
"fr": "Méthodologie de qualification, d'endiguement, d'investigation et de résolution d'une attaque par rançongiciel, couvrant les environnements IT, le signalement légal, et le retour à la normale"
},
"jobs": {
"evaluate_incident": {
"name": { "en": "Evaluate the incident", "fr": "Évaluer l'incident" },
"description": {
"en": "Steps to detect, evaluate and qualify the ransomware incident",
"fr": "Étapes pour détecter, évaluer et qualifier l'incident de type rançongiciel"
},
"placement": 1,
"dependsOn": [],
"steps": {
"evaluate_scope": {
"name": { "en": "Evaluate the scope", "fr": "Évaluer le périmètre" },
"description": {
"en": "Determine which systems, applications, and network segments are affected across the organization",
"fr": "Déterminer quels systèmes, applications et segments réseau sont affectés au sein de l'organisation"
},
"priority": 1
},
"evaluate_impact": {
"name": { "en": "Evaluate the impact", "fr": "Évaluer l'impact" },
"description": {
"en": "Assess the potential impact on business activities, critical services, data availability, and client deliverables",
"fr": "Évaluer l'impact potentiel sur les activités métier, les services critiques, la disponibilité des données et les livrables clients"
},
"priority": 2
},
"evaluate_urgency": {
"name": { "en": "Evaluate the urgency", "fr": "Évaluer l'urgence" },
"description": {
"en": "Determine how urgent it is to contain the incident based on encryption progress and the criticality of affected systems",
"fr": "Déterminer l'urgence à endiguer l'incident en fonction de la progression du chiffrement et de la criticité des éléments affectés"
},
"priority": 3
},
"qualify_incident": {
"name": { "en": "Qualify the incident", "fr": "Qualifier l'incident" },
"description": {
"en": "Conclude on the severity level of the incident based on previous evaluations and trigger the appropriate crisis level",
"fr": "Conclure sur le niveau de gravité de l'incident en fonction des évaluations précédentes et déclencher le niveau de crise adapté"
},
"priority": 4
},
"detect_ransomware": {
"name": { "en": "Detect the ransomware activity", "fr": "Détecter l'activité du rançongiciel" },
"description": {
"en": "Confirm the alert source (EDR, SOC, user report, ransom note) indicating a ransomware attack",
"fr": "Confirmer la source de l'alerte (EDR, SOC, remontée utilisateur, note de rançon) indiquant une attaque par rançongiciel"
},
"priority": 5
},
"identify_ransomware_family": {
"name": { "en": "Identify the ransomware family", "fr": "Identifier la famille de rançongiciel" },
"description": {
"en": "Attempt to identify the ransomware strain and associated threat actor based on indicators of compromise",
"fr": "Tenter d'identifier la souche du rançongiciel et le groupe d'attaquants associé à partir des indicateurs de compromission"
},
"priority": 6
}
}
},
"activate_crisis_management": {
"name": { "en": "Activate crisis management", "fr": "Activer la gestion de crise" },
"description": {
"en": "Actions to mobilize the crisis organization and engage the necessary internal and external stakeholders",
"fr": "Actions pour mobiliser l'organisation de crise et solliciter les parties prenantes internes et externes nécessaires"
},
"placement": 2,
"dependsOn": [],
"steps": {
"notify_insurance": {
"name": { "en": "Notify the cyber insurance provider", "fr": "Notifier l'assureur cyber" },
"description": {
"en": "Inform the insurer promptly to activate coverage and comply with policy notification requirements",
"fr": "Informer rapidement l'assureur pour activer la couverture et respecter les délais de déclaration du contrat"
},
"priority": 1
},
"alert_crisis_cell": {
"name": { "en": "Alert the crisis cell", "fr": "Alerter la cellule de crise" },
"description": {
"en": "Notify crisis stakeholders (IT security, IT management, general management, legal)",
"fr": "Notifier les parties prenantes de crise (sécurité IT, direction informatique, direction générale, juridique)"
},
"priority": 2
},
"engage_legal_counsel": {
"name": { "en": "Engage legal counsel", "fr": "Solliciter le conseil juridique" },
"description": {
"en": "Involve legal teams to advise on regulatory obligations, contractual exposure and law enforcement liaison",
"fr": "Impliquer les équipes juridiques pour conseiller sur les obligations réglementaires, l'exposition contractuelle et les échanges avec les autorités"
},
"priority": 3
},
"designate_crisis_manager": {
"name": { "en": "Designate a crisis manager", "fr": "Désigner un pilote de crise" },
"description": {
"en": "Appoint a single point of coordination responsible for driving the response across all affected teams and systems",
"fr": "Désigner un point de coordination unique responsable du pilotage de la réponse à travers les équipes et systèmes affectés"
},
"priority": 4
},
"define_communication_plan": {
"name": { "en": "Define the communication plan", "fr": "Définir le plan de communication" },
"description": {
"en": "Establish who needs to be informed (employees, clients, authorities, media) and at what frequency",
"fr": "Établir qui doit être informé (collaborateurs, clients, autorités, médias) et à quelle fréquence"
},
"priority": 5
},
"engage_incident_response_firm": {
"name": { "en": "Engage a forensic/incident response firm", "fr": "Solliciter un prestataire de réponse à incident (forensic)" },
"description": {
"en": "Bring in specialized external expertise to support investigation, containment and eradication",
"fr": "Faire appel à une expertise externe spécialisée pour appuyer l'investigation, l'endiguement et l'éradication"
},
"priority": 6
}
}
},
"contain_and_investigate": {
"name": { "en": "Contain and investigate", "fr": "Endiguer et investiguer" },
"description": {
"en": "Actions to stop the propagation of the attack, preserve evidence and understand its origin and extent",
"fr": "Actions pour stopper la propagation de l'attaque, préserver les preuves et comprendre son origine et son étendue"
},
"placement": 3,
"dependsOn": [],
"steps": {
"segment_network": {
"name": { "en": "Segment affected network zones", "fr": "Segmenter les zones réseau affectées" },
"description": {
"en": "Cut or restrict connections between affected and healthy network segments to prevent further propagation",
"fr": "Couper ou restreindre les connexions entre les segments réseau affectés et sains pour empêcher toute propagation supplémentaire"
},
"priority": 1
},
"eradicate_malware": {
"name": { "en": "Eradicate the malware", "fr": "Éradiquer le maliciel" },
"description": {
"en": "Remove all traces of the ransomware and any persistence mechanisms from affected systems",
"fr": "Supprimer toute trace du rançongiciel et tout mécanisme de persistance sur les systèmes affectés"
},
"priority": 2
},
"preserve_evidence": {
"name": { "en": "Preserve evidence", "fr": "Préserver les preuves" },
"description": {
"en": "Collect and securely store logs, disk images, memory dumps and the ransom note for investigation and potential legal proceedings",
"fr": "Collecter et stocker de manière sécurisée les journaux, images disque, dumps mémoire et la note de rançon pour l'investigation et d'éventuelles suites judiciaires"
},
"priority": 3
},
"identify_entry_vector": {
"name": { "en": "Identify the entry vector", "fr": "Identifier le vecteur d'entrée" },
"description": {
"en": "Determine how the attacker initially gained access (phishing, exposed remote access, vulnerable system, third party)",
"fr": "Déterminer comment l'attaquant a initialement obtenu l'accès (hameçonnage, accès distant exposé, système vulnérable, tiers)"
},
"priority": 4
},
"assess_lateral_movement": {
"name": { "en": "Assess lateral movement", "fr": "Évaluer les mouvements latéraux" },
"description": {
"en": "Investigate the extent of the attacker's movement across the organization's systems and network",
"fr": "Investiguer l'étendue des déplacements de l'attaquant à travers les systèmes et le réseau de l'organisation"
},
"priority": 5
},
"assess_data_exfiltration": {
"name": { "en": "Assess data exfiltration", "fr": "Évaluer l'exfiltration de données" },
"description": {
"en": "Investigate whether sensitive data was accessed or exfiltrated, including intellectual property, confidential business data, and personal data",
"fr": "Enquêter sur un éventuel accès ou une exfiltration de données sensibles, incluant la propriété intellectuelle, les données métier confidentielles et les données personnelles"
},
"priority": 6
},
"isolate_infected_systems": {
"name": { "en": "Isolate infected systems", "fr": "Isoler les systèmes infectés" },
"description": {
"en": "Disconnect compromised machines and network segments to stop the encryption from spreading",
"fr": "Déconnecter les machines et segments réseau compromis pour stopper la propagation du chiffrement"
},
"priority": 7
},
"disable_compromised_accounts": {
"name": { "en": "Disable compromised accounts", "fr": "Désactiver les comptes compromis" },
"description": {
"en": "Suspend or reset credentials for accounts suspected of being used by the attacker",
"fr": "Suspendre ou réinitialiser les identifiants des comptes suspectés d'être utilisés par l'attaquant"
},
"priority": 8
}
}
},
"legal_and_regulatory_reporting": {
"name": { "en": "Legal and regulatory reporting", "fr": "Signalement légal et réglementaire" },
"description": {
"en": "Assess reporting obligations, engage authorities, and manage the ransom demand decision",
"fr": "Évaluer les obligations de signalement, solliciter les autorités et gérer la décision relative à la demande de rançon"
},
"placement": 4,
"dependsOn": [],
"steps": {
"assess_data_breach": {
"name": { "en": "Assess the data breach", "fr": "Évaluer la violation de données" },
"description": {
"en": "Determine whether personal data, trade secrets, or client-confidential data have been compromised",
"fr": "Déterminer si des données personnelles, des secrets commerciaux, ou des données confidentielles clients ont été compromises"
},
"priority": 1
},
"file_police_report": {
"name": { "en": "File a police report", "fr": "Déposer plainte" },
"description": {
"en": "Report the attack to the competent law enforcement authority (e.g. cybercrime unit or local equivalent)",
"fr": "Signaler l'attaque à l'autorité compétente (ex. unité spécialisée en cybercriminalité ou équivalent local)"
},
"priority": 2
},
"assess_ransom_demand": {
"name": { "en": "Assess the ransom demand", "fr": "Évaluer la demande de rançon" },
"description": {
"en": "Analyze the ransom note and, with legal and executive stakeholders, decide on the position regarding payment",
"fr": "Analyser la note de rançon et, avec les parties prenantes juridiques et exécutives, statuer sur la position à adopter vis-à-vis du paiement"
},
"priority": 3
},
"notify_national_cyber_agency": {
"name": { "en": "Notify the national cybersecurity agency", "fr": "Notifier l'agence nationale de cybersécurité" },
"description": {
"en": "Report the incident to the relevant national cybersecurity authority when applicable",
"fr": "Signaler l'incident à l'autorité nationale de cybersécurité compétente, le cas échéant"
},
"priority": 4
},
"notify_supervisory_authority": {
"name": { "en": "Notify the data protection authority", "fr": "Notifier l'autorité de protection des données" },
"description": {
"en": "If personal data was breached, submit a declaration within the legal timeframe (e.g. 72 hours under GDPR)",
"fr": "En cas de fuite de données personnelles, soumettre une déclaration dans le délai légal (ex. 72 heures au titre du RGPD)"
},
"priority": 5
},
"notify_affected_third_parties": {
"name": { "en": "Notify affected third parties", "fr": "Notifier les tiers concernés" },
"description": {
"en": "Inform clients, partners, or suppliers whose data or operations may have been impacted, as required by law or contracts",
"fr": "Informer les clients, partenaires ou fournisseurs dont les données ou les opérations peuvent avoir été impactées, conformément à la loi ou aux contrats"
},
"priority": 6
}
}
},
"restore_operations": {
"name": { "en": "Restore operations", "fr": "Restaurer les opérations" },
"description": {
"en": "Actions to rebuild systems, restore data and progressively resume IT and business activities",
"fr": "Actions pour reconstruire les systèmes, restaurer les données et reprendre progressivement les activités IT et métier"
},
"placement": 5,
"dependsOn": [],
"steps": {
"test_restored_systems": {
"name": { "en": "Test restored systems", "fr": "Tester les systèmes restaurés" },
"description": {
"en": "Verify the functional and security integrity of restored systems before reconnecting them to the network",
"fr": "Vérifier l'intégrité fonctionnelle et sécuritaire des systèmes restaurés avant de les reconnecter au réseau"
},
"priority": 1
},
"assess_backup_integrity": {
"name": { "en": "Assess backup integrity", "fr": "Évaluer l'intégrité des sauvegardes" },
"description": {
"en": "Verify that available backups are clean, complete and were not themselves compromised by the attacker",
"fr": "Vérifier que les sauvegardes disponibles sont saines, complètes et n'ont pas elles-mêmes été compromises par l'attaquant"
},
"priority": 2
},
"progressive_reactivation": {
"name": { "en": "Progressively reactivate access", "fr": "Réactiver les accès progressivement" },
"description": {
"en": "Reopen access to users and clients in a controlled and prioritized manner",
"fr": "Rouvrir les accès aux utilisateurs et clients de manière contrôlée et priorisée"
},
"priority": 3
},
"restart_critical_services": {
"name": { "en": "Restart critical services", "fr": "Redémarrer les services critiques" },
"description": {
"en": "Coordinate with business and operations teams to safely and progressively restart critical business services and applications",
"fr": "Coordonner avec les équipes métier et opérationnelles pour redémarrer de manière sûre et progressive les services métier et applications critiques"
},
"priority": 4
},
"restore_from_clean_backup": {
"name": { "en": "Restore data from clean backups", "fr": "Restaurer les données depuis des sauvegardes saines" },
"description": {
"en": "Recover data on rebuilt systems from the most recent verified clean backups",
"fr": "Restaurer les données sur les systèmes reconstruits à partir des dernières sauvegardes saines vérifiées"
},
"priority": 5
},
"rebuild_compromised_systems": {
"name": { "en": "Rebuild compromised systems", "fr": "Reconstruire les systèmes compromis" },
"description": {
"en": "Rebuild affected servers and workstations from trusted, hardened images rather than simply cleaning them",
"fr": "Reconstruire les serveurs et postes affectés à partir d'images de confiance et durcies plutôt que de simplement les nettoyer"
},
"priority": 6
}
}
},
"return_to_normal": {
"name": { "en": "Return to normal operations", "fr": "Retour à la normale" },
"description": {
"en": "Steps to confirm full eradication, close the incident and implement lessons learned",
"fr": "Étapes pour confirmer l'éradication complète, clôturer l'incident et mettre en œuvre les leçons apprises"
},
"placement": 6,
"dependsOn": [],
"steps": {
"close_incident": {
"name": { "en": "Close the incident", "fr": "Clôturer l'incident" },
"description": {
"en": "Formally close the incident record once resolution and stability are confirmed across all affected systems and teams",
"fr": "Clôturer formellement la fiche incident une fois la résolution et la stabilité confirmées sur l'ensemble des systèmes et équipes affectés"
},
"priority": 1
},
"monitor_activity": {
"name": { "en": "Monitor activity", "fr": "Surveiller l'activité" },
"description": {
"en": "Closely monitor systems and network for any sign of recurrence or residual attacker presence",
"fr": "Surveiller étroitement les systèmes et le réseau pour détecter tout signe de récidive ou de présence résiduelle de l'attaquant"
},
"priority": 2
},
"verify_full_eradication": {
"name": { "en": "Verify full eradication", "fr": "Vérifier l'éradication complète" },
"description": {
"en": "Confirm with internal teams and the incident response firm that all compromise vectors have been addressed",
"fr": "Confirmer avec les équipes internes et le prestataire de réponse à incident que tous les vecteurs de compromission ont été traités"
},
"priority": 3
},
"update_security_measures": {
"name": { "en": "Update security measures", "fr": "Mettre à jour les mesures de sécurité" },
"description": {
"en": "Implement necessary updates to security architecture, backup strategy and incident response plan based on lessons learned",
"fr": "Mettre en œuvre les mises à jour nécessaires de l'architecture de sécurité, de la stratégie de sauvegarde et du plan de réponse aux incidents en fonction des leçons apprises"
},
"priority": 4
},
"conduct_post_incident_review": {
"name": { "en": "Conduct a post-incident review", "fr": "Réaliser un retour d'expérience (REX)" },
"description": {
"en": "Organize a debrief with involved teams to analyze the incident timeline, response effectiveness and root cause",
"fr": "Organiser un débriefing avec les équipes impliquées pour analyser la chronologie, l'efficacité de la réponse et la cause racine de l'incident"
},
"priority": 5
}
}
}
}
}Cela a-t-il été utile ?
Plus dans Ressources
Organigramme des rôles de criseFiche Produit PanicSafeFAQSécurité de l'infrastructure et de l'IABesoin d'aide supplémentaire ? Demander à l'équipe