obhutDoku

Dokumentation durchsuchen

Dokumentationsseiten durchsuchen

Audit-Nachweise und SIEM-Anbindung

Signiertes Audit-Evidence-Bundle herunterladen, Hash-Kette und Ed25519-Signaturen offline prüfen und das Log inkrementell in ein SIEM ziehen.

Jede Gate-Entscheidung wird in eine fortlaufende, hash-verkettete und Ed25519-signierte Audit-Kette geschrieben. Sie können die Kette als eigenständiges Beweispaket exportieren und offline verifizieren — ohne obhut vertrauen zu müssen. Alle Routen liegen hinter dem security_reader-Gate (ein API-Token mit Rolle auditor, member oder admin).

Evidence-Bundle herunterladen

curl --fail-with-body \
  "https://api.obhut.io/tenants/$TENANT/audit-events/bundle" \
  --header "Authorization: Bearer $OBHUT_PAT" \
  --output obhut-audit.json

Das Bundle (format: "obhut-audit-evidence-bundle", version: 1) enthält jedes Ereignis in seq-Reihenfolge, die öffentlichen Signaturschlüssel, das serverseitige Prüfurteil und eine algorithm-Beschreibung. Das Serverurteil ist eine Bequemlichkeit, nicht der Vertrauensanker: das Bundle trägt alles, um es unabhängig neu zu berechnen.

Offline verifizieren

Jedes Glied bindet an das vorherige. Der Hash eines Ereignisses ist:

sha256(prevHash || canonicalJSON{id,tenantId,resourceId,actor,decision,reason,requestedUrl})

Der Genesis-prevHash ist der leere String. Die Signatur ist Ed25519 über den Hex-Hash; den passenden Schlüssel wählen Sie per signingKid aus signingKeys.

Für lange Ketten prüfen Sie seitenweise über GET /audit-events/verify/page?afterSeq=&prevHash=&limit= und reichen den prevHash der letzten Seite in die nächste. Eine unterbrochene Kette meldet die erste abweichende seq.

Inkrementell in ein SIEM ziehen

GET /audit-events/export zieht die Kette vorwärts ab dem zuletzt aufgenommenen seq (sinceSeq, exklusiv), eine Seite pro Aufruf:

curl --fail-with-body \
  "https://api.obhut.io/tenants/$TENANT/audit-events/export?sinceSeq=0&limit=500" \
  --header "Authorization: Bearer $OBHUT_PAT"

Die Antwort liefert auditEvents, die signingKeys, den nextSeq-Cursor und hasMore. Rufen Sie in einer Schleife mit dem neuen sinceSeq = nextSeq auf, bis hasMore false ist. Den aktuellen Ketten-Kopf für Lag-Anzeigen liefert GET /audit-events/head.