Un seul modèle d'audit pour chaque application.
Un modèle d'événements d'audit commun, vérifiable et indépendant du backend pour les applications métier. Il définit ce qu'est un événement d'audit — pas où il est stocké, comment il est transporté ni quelle réglementation il satisfait.
Pourquoi
Presque chaque application enregistre des opérations auditables, et presque chacune invente sa propre forme pour ces enregistrements. Résultat : des enregistrements impossibles à valider jusqu'à ce qu'un défaut soit découvert des années plus tard dans les données conservées ; des pistes d'audit de deux systèmes illisibles ensemble sans traduction sur mesure ; les mêmes questions — qu'est-ce qu'un acteur, comment consigner une action au nom d'autrui, où va une approbation — rejugées à chaque nouvelle application ; et des données d'audit qui accumulent en silence secrets et données personnelles parce que personne n'a décidé de ce qui doit y figurer. OpenAuditModel répond à ces questions une fois, sous une forme qu'un validateur peut contrôler.
Un événement minimal
Sept champs obligatoires. Tout le reste est du contexte optionnel.
{
"specVersion": "0.1",
"id": "018f1b5c-6d2a-7c3e-9a1b-4f5e6d7c8b9a",
"time": "2026-03-14T09:24:31.412Z",
"event": {
"name": "data.record.update",
"category": "data-modification",
"outcome": "success"
},
"actor": {
"type": "user",
"id": "user-123"
},
"resource": {
"type": "record",
"id": "resource-123"
},
"application": {
"name": "application-service",
"environment": "production"
}
}
Vérifier un événement
Aucune installation, aucun checkout. Nécessite Node.js 22 ou plus récent.
npx @openauditmodel/cli validate audit-event.json
npx @openauditmodel/cli lint-privacy audit-event.json
npx @openauditmodel/cli check-profile audit-event.json --profile financial-transaction-management
Le code de sortie 0 signifie qu'un verdict a été produit et qu'il est positif. 1 : le verdict est négatif. 2 : l'outil n'a pas pu s'exécuter. 3 : aucun verdict n'a été produit — aucune règle du profil ne régit cet événement, ou l'entrée n'était pas un événement d'audit et n'a jamais été analysée. 3 n'est jamais une approbation.
Schémas canoniques
Ces URL sont les identifiants inscrits dans le $id de chaque schéma. Elles sont stables et les documents versionnés sont immuables. Rien n'a besoin de les télécharger : la validation est hors ligne, et un identifiant est un nom, pas une instruction de téléchargement.
Profils de domaine
10 profils applicables, 127 règles — 113 appliquées comme erreurs, 14 à titre indicatif. Un profil ne fait qu'ajouter des exigences au modèle de base ; aucun ne l'assouplit. Un événement qu'aucune règle ne régit est signalé comme non applicable, jamais comme conforme.
Les adresses ci-dessous servent chaque document de profil. Ce sont des adresses, pas des identités : un profil porte name et version, pas de $id ; ces URL ne doivent pas être figées comme identifiants canoniques.
| Profil | Règles | Document |
|---|---|---|
| api-and-integration-management | 13 | profile.json |
| backup-and-recovery | 13 | profile.json |
| customer-and-account-management | 13 | profile.json |
| deployment-and-change-management | 13 | profile.json |
| document-management | 11 | profile.json |
| financial-transaction-management | 12 | profile.json |
| identity-and-access-management | 11 | profile.json |
| incident-management | 15 | profile.json |
| message-broker-management | 12 | profile.json |
| secrets-and-key-management | 14 | profile.json |
L'adopter
Rien ici n'exige de changer l'endroit où vous stockez quoi que ce soit. La voie la moins coûteuse est un mapper d'export — c'est aussi la forme que demandent les clients entreprise :
existing audit database → mapper → OpenAuditModel NDJSON → customer, archive or SIEM
Ensuite : instrumenter un nouveau service, valider des fixtures en CI et concevoir les événements avec un agent IA via le serveur MCP, qui expose les mêmes moteurs déterministes en Streamable HTTP :
claude mcp add --transport http openauditmodel https://mcp.openauditmodel.org/mcp
C'est un service distant : le contenu des événements d'audit qui lui est soumis quitte votre machine. Pour des données réglementées, construisez et exécutez plutôt le serveur depuis le dépôt source — il est sans état et ne conserve rien dans les deux cas.
Ce que ce n'est pas
Ni backend de stockage de logs, ni base de données, ni SIEM, ni plateforme GRC, ni moteur de politiques, ni système d'autorisation. Pas un remplaçant d'OpenTelemetry, CloudEvents, ECS, OCSF, CADF ou OSCAL. Il se compose avec eux.
