Journal d'audit
Ce que Scrydon enregistre, comment les preuves sont protégées, qui peut les lire et comment les exporter.
Le journal d'audit est la source de référence de Scrydon, côté organisation, pour la conformité, la réponse aux incidents et l'analyse forensique. Il regroupe trois types de preuves dans une seule chronologie ordonnée :
| Type | Ce qu'il enregistre |
|---|---|
audit | Authentification, autorisation, lectures sensibles et modifications administratives |
workflow | Workflows planifiés, démarrés, mis en pause, repris, terminés, en échec, interrompus et purgés |
integrity | Échecs de vérification du journal d'audit et échecs de preuve ou incohérences de configuration de l'historique des workflows Dapr |
Consultez le catalogue du journal d'audit pour toutes les actions et tous les types de ressources acceptés.
Enveloppe d'événement commune
Chaque ligne de liste, ligne d'export et livraison vers un Log Receiver a la même forme versionnée :
| Champ | Rôle |
|---|---|
id, schemaVersion, dataVersion, type | Identité stable et sélection du décodeur |
scope | Périmètre de sécurité de l'organisation ou global à la plateforme |
action | Action enregistrée, comme SECRET_ACCESS ou workflow.completed |
resource | Type de ressource enregistré et identifiant concerné |
actor | Identité user, system ou anonymous préservant la confidentialité |
producer | ID d'application du workload authentifié et, si disponible, ID SPIFFE |
sourceEventId, sourcePayloadHash | Idempotence côté producteur et preuve de conflit |
occurredAt, recordedAt | Heure source et heure d'ajout au registre |
correlation | Identifiants de requête, de session, de trace et d'instance de workflow |
classification | Rang et schéma de classification optionnels |
data | Preuve bornée propre au type ; jamais de payloads bruts de workflow ou de secrets |
proof | Version de chaîne, périmètre, séquence, hash précédent et hash de la ligne |
redacted | Indique si des éléments sensibles ont été retirés pour ce lecteur |
L'enveloppe existe en deux versions de schéma, distinguées par schemaVersion :
schemaVersion | Enregistre | Preuve |
|---|---|---|
2 | Événements de gouvernance : authentification, modifications administratives, workflows, intégrité | Chaîne de hash par ligne : proof.hashVersion, chainScopeKey, chainSequence, previousRowHash, rowHash |
3 | Événements de télémétrie à fort volume (lectures de ressources, appels d'API) lorsque votre installation utilise le stockage de télémétrie | Une fenêtre d'attestation signée : proof.tier vaut telemetry, proof.batchId désigne la fenêtre et proof.rowHash est la feuille de la ligne dans celle-ci. Les champs de chaîne valent toujours null, tout comme sourcePayloadHash |
Un acteur anonymous en version 3 porte identifierHash: null : le stockage de
télémétrie ne conserve pas le hash d'identifiant. Un événement dont l'acteur
anonyme en possède un n'est donc jamais envoyé au stockage de télémétrie : il est
enregistré comme événement de gouvernance en version 2, avec le hash. Un décodeur qui n'accepte que
la version 2 doit ignorer les lignes en version 3 plutôt qu'échouer.
Décisions d'autorisation
Scrydon enregistre chaque résultat d'autorisation — autorisé, refusé ou
indéterminé — pour les opérations de lecture, d'écriture, de suppression,
d'exécution, d'administration et de retrait. Un résultat indéterminé signifie
que Scrydon n'a pas pu obtenir de réponse de politique fiable ; les opérations
protégées échouent de façon fermée et renvoient l'erreur stable
AUTHZ_UNAVAILABLE lorsque l'API expose un code d'erreur.
La preuve d'autorisation distingue le sujet évalué du producteur. Le sujet est l'utilisateur, le compte de service, le workload, le mandat d'exécution ou l'identité système dont l'accès a été contrôlé. Le producteur est le workload Scrydon authentifié qui a soumis la preuve. Les décisions d'une organisation rejoignent la chaîne d'intégrité de cette organisation ; les décisions sans organisation utilisent un périmètre global à la plateforme explicite.
API Platform valide de manière atomique chaque décision et son registre d'idempotence avant de répondre. Si la preuve ne peut pas être persistée, la requête renvoie 503 et l'opération protégée ne s'exécute pas. Une nouvelle tentative avec la même clé de décision stable déduplique une requête identique ; une réutilisation conflictuelle renvoie 409. Le backbone d'événements général utilisé pour la synchronisation des workflows est distinct de ce chemin de preuve.
Exemple
{
"id": "9ecb19b1-...",
"schemaVersion": 2,
"type": "audit",
"dataVersion": 1,
"scope": { "kind": "organization", "id": "org_001" },
"action": "SECRET_ACCESS",
"resource": { "type": "secret", "id": "sec_xyz789" },
"actor": { "kind": "user", "id": "usr_456" },
"producer": { "appId": "agentic", "spiffeId": "spiffe://..." },
"sourceEventId": "secret-access:req_123",
"occurredAt": "2026-07-16T10:30:00Z",
"recordedAt": "2026-07-16T10:30:00.120Z",
"correlation": { "requestId": "req_123", "sessionId": null, "traceId": null, "workflowInstanceId": null },
"classification": null,
"data": { "metadata": { "strategy": "LOCAL" } },
"proof": { "hashVersion": 2, "chainScopeKey": "org:org_001", "chainSequence": 42, "previousRowHash": "...", "rowHash": "..." },
"redacted": false
}Consultation et vérification des preuves
Les propriétaires et administrateurs d'organisation ouvrent Paramètres →
Plateforme → Journal d'audit. L'onglet Événements filtre par type d'événement,
action et ressource, et la sélection d'une ligne ouvre sa vue de preuve
complète. La colonne bouclier indique l'état de preuve de la ligne ; l'action
bouclier de la barre d'outils vérifie une fenêtre temporelle sans quitter la
liste des événements. L'URL de la page conserve l'onglet ou le panneau
d'intégrité courant dans son fragment, par exemple #receivers, #policy ou
#integrity.
La vérification de chaîne ne couvre que les événements de gouvernance. Un événement de télémétrie propose à la place Vérifier la fenêtre d'attestation dans sa vue de preuve : Scrydon contrôle la signature ML-DSA-65 de la fenêtre, son nombre de lignes et sa racine de Merkle, et recalcule un échantillon des lignes stockées. Chaque événement de cette fenêtre affiche alors le verdict :
| Verdict | Signification |
|---|---|
| Intacte | Signature, nombre de lignes, racine et lignes échantillonnées concordent |
| Récupérée | Comme intacte, mais la fenêtre a été ré-attestée après un redémarrage du service |
| Non attestée | Aucun point de contrôle signé n'existe pour la fenêtre |
| Altérée | La signature, le nombre de lignes, la racine ou une ligne échantillonnée diverge ; le constat est affiché |
Les lignes classifiées sont évaluées par rapport à l'habilitation effective du
lecteur. Si le rang est insuffisant ou si les schémas de classification
diffèrent, Scrydon conserve l'action, l'acteur, les horodatages et la preuve
d'intégrité, tout en retirant le contexte de ressource protégé et en marquant
l'enveloppe redacted: true.
Log Receivers et export
L'onglet Log Receivers envoie tous les types d'événements vers un SIEM, un lac de données ou un webhook au moyen d'un pipeline de livraison « au moins une fois » signé par HMAC. Un récepteur peut restreindre son filtre, mais les nouveaux récepteurs incluent par défaut les événements d'audit, de workflow et d'intégrité. Les mêmes filtres sont disponibles pour l'export NDJSON, de sorte qu'un client peut exporter la chronologie complète des preuves sans joindre des systèmes distincts. Un export inclut aussi les événements de télémétrie, fusionnés avec les événements de gouvernance du plus ancien au plus récent.
Un récepteur ne transmet que les événements de gouvernance, sauf si Also forward
telemetry est activé, à sa création ou plus tard depuis sa ligne. La
télémétrie est le niveau à fort volume : le récepteur reçoit alors une requête
signée supplémentaire par fenêtre attestée de 10 secondes :
Content-Type: application/x-ndjson, une enveloppe en version 3 par ligne, le
filtre du récepteur étant appliqué à chaque ligne. La même signature HMAC, les
mêmes nouvelles tentatives et la même gestion des lettres mortes s'appliquent. Enregistrer chaque résultat d'autorisation augmente le
volume du journal d'audit et des récepteurs proportionnellement au trafic de
requêtes protégées ; dimensionnez la rétention et le débit des récepteurs à
partir des taux de décision observés, et pas seulement des taux de refus.
Rétention et intégrité
| Paramètre | Valeur par défaut |
|---|---|
| Durée de rétention | 365 jours, configurable par organisation |
| Stockage immuable | Contrat applicatif en ajout seul |
| Détection d'altération | Chaîne SHA-256 obligatoire par événement |
| Points de contrôle | Points de contrôle signés ML-DSA-65 |
La durée de rétention s'applique à chaque copie du journal d'audit, y compris le stockage de télémétrie à haut volume lorsque votre installation en utilise un ; une modification prend effet en moins d'une journée.
Une fin de chaîne récente et valide peut afficher temporairement « en attente d'un point de contrôle » ; il ne s'agit pas d'une incohérence. Les lignes créées avant la bascule vers la chaîne versionnée sont marquées comme héritées (legacy) et ne sont jamais présentées comme vérifiées cryptographiquement. La signature de l'historique des workflows Dapr 1.18 est un système de preuve indépendant : lorsqu'un opérateur l'active après la vidange requise et la préparation du cycle de vie de la CA, le journal d'audit enregistre des reçus de vérification et des échecs bornés, et non les bundles de signatures bruts.
La rétention se configure par organisation sous Journal d'audit → Politique.
L'augmentation de la rétention est possible à tout moment. Sa réduction exige l'approbation du propriétaire de l'organisation et ne réécrit pas les preuves historiques.
Données jamais enregistrées
- Valeurs de secrets
- Contenu des documents de base de connaissances
- Entrées ou sorties de workflow
- Contenu des prompts ou réponses LLM
- Bundles de signatures de l'historique des workflows Dapr
Le journal d'audit enregistre des identifiants, des décisions, des résultats et un état de preuve borné — suffisamment pour établir ce qui s'est passé sans dupliquer les payloads protégés.