Ein Audit-Modell für alle Anwendungen.
OpenAuditModel ist ein gemeinsames Modell für Audit-Ereignisse (audit events) in Geschäftsanwendungen. Die Ereignisse lassen sich überprüfen, und das Modell ist unabhängig davon, in welchem System Sie sie speichern. Es legt fest, was ein Audit-Ereignis ist. Wo es gespeichert wird, wie es übertragen wird und welche Vorschrift es erfüllt, legt es nicht fest.
Warum
Fast jede Anwendung protokolliert Vorgänge, die später geprüft werden müssen, und fast jede erfindet dafür ihr eigenes Format. Die Rechnung kommt später. Die Einträge werden erst geprüft, wenn Jahre danach ein Fehler in den aufbewahrten Daten auffällt. Die Audit-Trails zweier Systeme lassen sich ohne eine eigens gebaute Übersetzung nicht nebeneinander lesen. Dieselben Fragen werden bei jeder neuen Anwendung von vorn diskutiert: Wer ist der Akteur? Wie wird festgehalten, dass jemand im Namen einer anderen Person handelt? Wo steht die Freigabe? Und weil niemand entschieden hat, was hineingehört, sammeln sich in den Audit-Daten unbemerkt Passwörter, Schlüssel und personenbezogene Daten an. OpenAuditModel beantwortet diese Fragen einmal, und zwar in einer Form, die ein Validator prüfen kann.
Ein Ereignis in seiner einfachsten Form
Sieben Felder sind Pflicht. Alles Weitere ist optional und liefert Kontext.
{
"specVersion": "1.0",
"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"
}
}
Gleich ausprobieren
Sie müssen nichts installieren und das Repository nicht klonen. Node.js 22 oder neuer genügt.
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
Exit-Code 0 bedeutet: Es gab ein Urteil, und das Ereignis hat bestanden. 1 bedeutet: Es gab ein Urteil, und das Ereignis ist durchgefallen. 2 bedeutet: Das Werkzeug konnte gar nicht laufen. 3 bedeutet: Es gab kein Urteil. Das kommt vor, wenn das Ereignis eine Spezifikationsversion angibt, die das Werkzeug nicht implementiert, wenn das Profil keine Regel für dieses Ereignis enthält oder wenn die Eingabe kein Audit-Ereignis war und deshalb nie geprüft wurde. 3 ist niemals eine Freigabe.
Kanonische Schemas
Diese URLs sind die Bezeichner, die in der $id jedes Schemas stehen. Die Adressen bleiben stabil, und ein einmal veröffentlichtes versioniertes Dokument ändert sich nicht mehr. Kein Werkzeug muss sie abrufen: Die Validierung läuft offline, und ein Bezeichner ist ein Name, keine Anweisung zum Herunterladen.
/schemas/audit-event/1.0/schema.json
/schemas/audit-event/0.1/schema.json
/schemas/profile-definition/0.1/schema.json
/schemas/checkpoint/0.1/schema.json
/schemas/proof/0.1/schema.json
Fachprofile
10 Profile mit 127 Regeln: 113 Regeln werden als Fehler durchgesetzt, 14 Regeln sind Empfehlungen. Ein Profil ergänzt das Kernmodell nur um Anforderungen; kein Profil lockert es. Ein Ereignis, für das keine Regel gilt, wird als nicht anwendbar gemeldet und nie als konform.
Unter den folgenden Adressen ist jedes Profildokument abrufbar. Es sind Adressen, keine Identitäten: Ein Profil trägt name und version, aber keine $id. Legen Sie diese URLs deshalb nicht als kanonische Bezeichner fest.
| Profil | Regeln | Dokument |
|---|---|---|
| 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 |
So führen Sie es ein
Nichts hiervon verlangt, dass Sie den Speicherort Ihrer Daten ändern. Der einfachste Weg ist ein Konverter, der vorhandene Einträge in dieses Format überführt; genau diese Form fragen Unternehmenskunden ohnehin nach:
existing audit database → mapper → OpenAuditModel NDJSON → customer, archive or SIEM
Die nächsten Schritte liegen auf der Hand: Ein neuer Dienst erzeugt seine Ereignisse in diesem Format, Beispieldateien werden in der CI validiert, und Ereignisse werden zusammen mit einem KI-Agenten über den MCP-Server entworfen. Der Server stellt dieselben deterministischen Engines über Streamable HTTP bereit:
claude mcp add --transport http openauditmodel https://mcp.openauditmodel.org/mcp
Das ist ein entfernter Dienst; der Inhalt der Audit-Ereignisse, die Sie ihm schicken, verlässt Ihren Rechner. Für regulierte Daten bauen und betreiben Sie den Server stattdessen selbst aus dem Quell-Repository. Der Server hält in beiden Fällen keinen Zustand und speichert nichts.
Was es nicht ist
OpenAuditModel ist kein Speicher für Logs, keine Datenbank, kein SIEM, keine GRC-Plattform, keine Policy-Engine und kein Autorisierungssystem. Es ersetzt weder OpenTelemetry noch CloudEvents, ECS, OCSF, CADF oder OSCAL, sondern arbeitet mit ihnen zusammen.
