Preuves et scellés
L'écran Preuves et scellés permet de vérifier la chaîne d'audit et ses scellés signés, de sceller une nouvelle plage
d'événements, de télécharger un lot hors ligne, de lire les alertes d'intégrité, de déchiffrer le contenu sensible d'un
événement avec un motif audité et de lancer la rétention des contenus de preuve. Chemin dans le portail :
/audit/evidence ; le titre de sa page est Preuves d'audit. Il sert aux auditeurs (auditor), aux responsables
sécurité (security_officer) et aux administrateurs du tenant (tenant_admin).
Ce que montre l'écran
Cinq onglets.
- Vérification : section Vérification des preuves, « Chaîne, scellés, signatures et horodatages. », avec les boutons Vérifier la signature et Lot hors ligne. À gauche : le badge Chaîne valide ou Chaîne invalide et la réponse de la vérification, ou « Non vérifiée pendant cette session. » ; le lot hors ligne quand il est demandé. À droite : Passerelle d'audit, l'état de la passerelle d'audit.
- Scellés : tableau des scellés signés.
| Colonne | Contenu |
|---|---|
| Scellé | Numéro du scellé. |
| Séquence de début | Première séquence d'événement couverte. |
| Séquence de fin | Dernière séquence d'événement couverte. |
| Événements | Nombre d'événements scellés. |
| Racine de Merkle | Racine de Merkle de la plage. |
| Clé | Identifiant de la clé de signature. |
| Scellé par | Auteur du scellé. |
| Scellé le | Date du scellé. |
- Alertes d'intégrité : tableau Type, Statut, Détail (JSON), Créé, avec le filtre Statut
(
open,acknowledged). Chaînes rompues, trous de séquence et scellés invalides apparaissent ici. - Accès aux contenus : le formulaire Déchiffrer un contenu, « Contenu sensible d'un événement, audité avec votre motif. », puis le tableau Journal d'accès (Acteur, Action, Raison, Le) où chaque lecture de preuve est consignée.
- Rétention des preuves : le formulaire Purge des preuves, « Purge ou effacement des contenus ; les contenus sous conservation sont ignorés. Commencez par un essai. », puis la section Rétention des preuves avec les dernières exécutions de rétention et d'effacement et les contenus gardés par une conservation légale.
Un clic sur une ligne d'un tableau l'affiche dans un panneau latéral.
Actions
| Bouton ou action | Ce qu'il fait | Appel d'API | Rôles |
|---|---|---|---|
| Vérifier la signature (onglet Vérification) | Vérifie toute la chaîne, les scellés, les signatures et les horodatages. | GET /v1/evidence/verify | auditor, security_officer, tenant_admin |
| Lot hors ligne | Construit le lot de vérification hors ligne des preuves et l'affiche. Affiché à auditor et security_officer. | GET /v1/evidence/bundle | auditor, security_officer |
| Panneau Passerelle d'audit | Lit l'état de la passerelle d'audit. | GET /v1/evidence/gateway | auditor, security_officer, tenant_admin |
| Onglet Scellés, Actualiser | Lit les scellés. | GET /v1/evidence/seals | auditor, security_officer, tenant_admin |
| Sceller maintenant puis Créer | Scelle les événements pas encore scellés (formulaire vide). Affiché à auditor et security_officer. | POST /v1/evidence/seals | security_officer, auditor |
| Vérifier la signature (ligne d'un scellé) | Vérifie un scellé et affiche la réponse. | GET /v1/evidence/seals/{id}/verify | auditor, security_officer, tenant_admin |
| Onglet Alertes d'intégrité, Statut puis Filtrer | Lit les alertes. | GET /v1/evidence/alerts | auditor, security_officer, tenant_admin |
| Déchiffrer un contenu : Événement, Raison, puis Exécuter | Confirmation du navigateur « Déchiffrer un contenu ? Cette action sensible est consignée dans le journal d'audit. », puis affiche le contenu déchiffré ; la lecture est consignée avec la raison. | POST /v1/evidence/events/{id}/payload | auditor, security_officer (jamais platform_admin) |
| Tableau Journal d'accès | Lit les lectures de preuves. | GET /v1/evidence/access-log | auditor, security_officer |
Purge des preuves : Type (retention, erasure), Date limite (par exemple 2025-01-01T00:00:00Z), Événements, Simulation (activée par défaut), puis Exécuter | Confirmation du navigateur, puis purge ou efface les contenus ; les contenus sous conservation sont ignorés ; une simulation ne fait que rendre compte. | POST /v1/evidence/retention/run | security_officer, tenant_admin |
| Section Rétention des preuves | Lit les dernières exécutions et les contenus conservés. | GET /v1/evidence/retention/evidence | auditor, security_officer, tenant_admin |
Rôles
D'après services/control-plane/src/eai/domains/evidence/routes.py et common.py : les lecteurs (READERS) sont
auditor, security_officer et tenant_admin ; sceller et le lot hors ligne exigent security_officer ou
auditor ; le journal d'accès exige auditor ou security_officer ; la purge exige security_officer ou
tenant_admin. La route des contenus vérifie PAYLOAD_ROLES (auditor, security_officer) explicitement :
platform_admin, administrateur technique, n'en fait pas partie. Le portail masque les formulaires aux rôles hors de
ROLES.sealWriters, ROLES.payloadReaders et ROLES.retentionRunners de portal/src/lib/kit.ts et affiche à la
place « Nécessite l'un de ces rôles : ... ».
Un effacement retire définitivement des contenus. Lancez-le toujours d'abord avec Simulation, lisez le rapport, puis relancez-le sans simulation. Les contenus sous conservation légale ne sont jamais purgés.
Tâches courantes
Prouver l'intégrité de la piste d'audit
- Vérifier la chaîne. Onglet Vérification > Vérifier la signature. Résultat attendu : le badge Chaîne valide. En cas d'échec : Chaîne invalide ; ouvrez Alertes d'intégrité pour trouver la plage rompue.
- Sceller les événements récents. Onglet Scellés > Sceller maintenant > Créer. Résultat attendu : une
nouvelle ligne de scellé avec sa plage et sa racine de Merkle. En cas d'échec :
audit_nothing_to_seal(HTTP 409) quand tous les événements sont déjà scellés ;audit_seal_key_unavailable(HTTP 503) quand la clé de signature est injoignable. - Remettre à l'auditeur un lot hors ligne. Onglet Vérification > Lot hors ligne. Résultat attendu : le lot
affiché en JSON, à enregistrer et à vérifier hors de la plateforme. En cas d'échec :
forbiddensi vous n'êtes niauditornisecurity_officer.
Lire le contenu sensible d'un événement
- Remplir la demande. Onglet Accès aux contenus : identifiant de l'Événement et une Raison (par
exemple le numéro du dossier), puis Exécuter et confirmez. Résultat attendu : le contenu déchiffré dans
Résultat. En cas d'échec :
audit_payload_purged(HTTP 410) si la rétention l'a retiré ;audit_payload_key_unavailable(HTTP 503) si la clé est injoignable ;audit_payload_tampered(HTTP 409) si le contenu ne correspond plus à son empreinte. - Vérifier la trace. Tableau Journal d'accès. Résultat attendu : une ligne avec votre identité, l'action et votre raison. En cas d'échec : cliquez Actualiser.
Purger les anciens contenus
- Lancer une simulation. Onglet Rétention des preuves : Type
retention, Date limite, Simulation activée, Exécuter. Résultat attendu : le rapport de ce qui serait purgé. En cas d'échec :forbiddensi vous n'êtes nisecurity_officernitenant_admin. - Lancer pour de bon. Même formulaire avec Simulation désactivée. Résultat attendu : la section Rétention des preuves montre la nouvelle exécution. En cas d'échec : lisez l'erreur sous le formulaire.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
| Chaîne invalide | Un trou, un événement modifié ou un scellé invalide dans la chaîne. | Lisez Alertes d'intégrité et suivez le guide des preuves d'audit. |
audit_nothing_to_seal (HTTP 409) | Aucun nouvel événement depuis le dernier scellé. | Rien à faire. |
audit_seal_key_unavailable / audit_payload_key_unavailable (HTTP 503) | La clé de signature ou de chiffrement est injoignable. | Vérifiez le service de clés de la plateforme, puis recommencez. |
audit_payload_purged (HTTP 410) | Le contenu a été retiré par une purge ou un effacement. | Seules les métadonnées de l'événement restent. |
audit_payload_tampered (HTTP 409) | Le contenu enregistré ne correspond plus à son empreinte. | Ouvrez un incident et conservez les preuves. |
forbidden (HTTP 403) sur Déchiffrer un contenu en platform_admin | platform_admin n'est pas lecteur des contenus. | Adressez-vous à un auditor ou à un security_officer. |