Worum es geht
Das Audit enthält, was alle auf der ganzen Plattform getan haben, in jedem Mandanten. Wer einen Teil davon lesen könnte, könnte schon aus den Einträgen herauslesen, welche Kunden es gibt. Deshalb ist das Lesen streng geregelt.
Wie gelesen wird
Das Audit hat genau eine Lesefunktion: die Schnittstelle AuditQueryUseCase mit der Methode page(page, size). Code, der im selben Programm wie CIAS läuft, ruft sie auf, etwa eine Verwaltungsoberfläche des Hosts. Einen Schreibzugang gibt es nicht. Einträge entstehen allein durch den Zuhörer, siehe Eine Spur für alles. Ein Audit, in das jemand von außen schreiben kann, wäre ein Ort für ein Alibi.
-
CIASangemeldetGibt es einen angemeldeten Aufrufer?↳ nein abgelehnt:
cias.audit.access-denied -
CIASPlattform-AdministratorTrägt sein Token eine Rolle, die als Plattform-Administrator zählt?↳ nein abgelehnt:
cias.audit.access-denied -
CIASSeiteIst
pagemindestens 0 undsizezwischen 1 und 500?↳ nein abgelehnt, bevor etwas gelesen wird - Eine Seite Einträge, neueste zuerst
Eine Seite
auditQuery.page(0, 3)AuditPage[
total = 1284, page = 0, size = 3,
entries = [
{ type: "AuthorizationEvent.Granted",
detail: "Granted[assignmentId=a41f…, userId=5c9e…, roleClient=cias-backend, roleKey=tenant-user, tenantKey=nordbau, validUntil=null, grantedBy=nordbau, occurredOn=2026-09-22T09:20:11Z]",
actorId: "e7d0…", actorTenant: "nordbau",
occurredOn: 2026-09-22T09:20:11Z, recordedOn: 2026-09-22T09:20:11.042Z },
{ type: "TenantEvent.Suspended",
detail: "Suspended[tenantId=4f2a…, tenantKey=suedlogistik, occurredOn=2026-09-22T09:14:03Z]",
actorId: "b21c…", actorTenant: null, … },
{ type: "AuthorizationEvent.Expired",
detail: "Expired[assignmentId=77c3…, …]",
actorId: null, actorTenant: null, … }
]
]| Teil | Bedeutung |
|---|---|
entries | die Einträge dieser Seite, neueste zuerst. Bei gleichem Zeitpunkt entscheidet die ID, damit keine Zeile beim Blättern doppelt kommt oder fehlt |
total | wie viele Einträge es insgesamt gibt |
page, size | welche Seite gelesen wurde und wie viele Zeilen eine volle Seite hat. Standard 50, höchstens 500 |
actorId leer | die Plattform hat selbst gehandelt oder niemand war angemeldet, im Beispiel ein Zeitgeber |
Das Feld detail ist Text, nicht strukturiert. Es ist die Beschreibung des Ereignisses, wie Java einen Record als Text ausgibt: Name, dann alle Felder mit Werten in eckigen Klammern.
Die Ausprägungen
Wann: Das Token trägt eine Rolle, die als Plattform-Administrator zählt.
Liest alle Einträge aller Mandanten.
Ergebnis: eine Seite Einträge
Wann: Mandanten-Administrator, gewöhnliche Person oder kein Token.
Auch den eigenen Mandanten sehen sie nicht. Ein Filter nach Mandant müsste Einträge ohne Mandant weglassen, etwa die eines Zeitgebers, und ein Audit, das still weglässt, was es nicht einordnen kann, ist das schlechteste Audit.
Ergebnis: abgelehnt: cias.audit.access-denied
Wann: size über 500, unter 1, oder page negativ.
CIAS lehnt ab, statt still weniger Zeilen zu liefern. Sonst glaubte der Aufrufer, alles gesehen zu haben.
Ergebnis: abgelehnt, nichts gelesen