OpenAuditModel

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.

Diese Seite ist eine deutsche Fassung zur Information; verbindlich ist die englische Seite. Spezifikation, Schemas und Profile erscheinen nur auf Englisch.
Version 1.0 · Stabil · Im Produktionsbetrieb noch nicht erprobt · Keine Compliance-Zusage. Das Schema unter der Adresse für 1.0 ändert sich nicht mehr; spätere 1.x-Versionen können es nur erweitern. Wer diese Spezifikation einhält, erfüllt damit kein Gesetz, keine Vorschrift, keine Norm und keinen Vertrag.

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.

ProfilRegelnDokument
api-and-integration-management13profile.json
backup-and-recovery13profile.json
customer-and-account-management13profile.json
deployment-and-change-management13profile.json
document-management11profile.json
financial-transaction-management12profile.json
identity-and-access-management11profile.json
incident-management15profile.json
message-broker-management12profile.json
secrets-and-key-management14profile.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.