Aller au contenu principal

La boîte noire

Tout ce qui touche à une crise passe par un journal en ajout seul. Ce n'est pas une couche d'audit posée à côté de l'application : c'est le seul chemin d'écriture.

Ce qui rend le journal inaltérable

La contrainte n'est pas dans le code applicatif — elle serait alors une discipline, et une discipline se contourne. Elle est portée par la base de données, par des déclencheurs qui refusent toute modification et toute suppression sur la table des événements.

-- Un déclencheur s'applique aussi au propriétaire de la base, contrairement
-- à un simple retrait de droits, qu'un superutilisateur peut se redonner.
create trigger journal_pas_de_modification
before update or delete or truncate on evenement
execute function journal_refuser_mutation();

Chaque événement porte l'empreinte SHA-256 de son contenu et de l'empreinte du précédent. Retirer, modifier ou intercaler un événement casse la chaîne à partir de ce point, et cela se voit.

L'événement portePourquoi
Son auteur, sa sessionQui a fait le geste, depuis quel appareil
Sa celluleDécisionnelle ou opérationnelle
Son heure d'inscriptionL'heure du serveur, celle qui ordonne
Son heure de saisieCelle déclarée par le client, conservée mais jamais ordonnante
Son origineHumaine, automatique, ou injectée par un outil d'exercice
Son empreinte, et la précédenteLe chaînage

Rembobiner

Le rejeu ne relit pas une liste d'entrées : il reconstruit l'état complet de la crise à un instant donné. Le curseur de rembobinage passe l'interface en lecture seule et affiche la crise telle qu'elle était — décisions prises, actions ouvertes, applications constatées à l'arrêt, échéances restantes.

Sur une crise longue, rejouer un million d'événements à chaque déplacement du curseur serait inutilisable : des instantanés de projection sont figés périodiquement, et le rejeu repart du plus proche.

Ce qui entre au journal, et ce qui n'y entre pas

C'est une frontière de produit, énoncée plutôt que subie.

Entre au journalN'y entre pas
Messages de salon, réactions, épinglesMessages directs entre deux personnes
Décisions, arbitrages, actionsFrappes de tableau blanc en direct
Points de situationIndicateurs de saisie, présence
Références de documents et leurs empreintesLes octets des documents
Constats de continuité, informations transmisesLe flux de veille externe collecté
Les échecs d'authentification

Deux raisons, toujours les mêmes. Le volume : un journal qu'on ne peut pas purger et que n'importe qui peut inonder est une poignée offerte. Les tiers : verser d'office les écrits de gens qui ne savent pas que nous existons serait une collecte permanente déguisée en trace de crise.

Ce que cela implique à l'exploitation

Un journal en ajout seul ne se purge pas. Une donnée qui y entre y reste pour la durée de conservation de la crise. C'est la contrepartie de la valeur probante, et il faut la connaître avant de mettre en service.