CodamAIDocs
Themafertig

CIAS-Audit und CDMS-Historie

Zwei verschiedene Protokolle: CIAS protokolliert Ereignisse um Personen und Rechte, CDMS protokolliert Datenstände. Wann man wo nachsieht.

Ausprägungen
Frage nach Rechten und Personen → CIAS-AuditFrage nach Daten → CDMS-HistorieFrage nach beidem

Worum es geht

In CodamAI gibt es zwei Protokolle, und sie beantworten verschiedene Fragen:

  • Das CIAS-Audit hält fest, was mit Personen, Mandanten und Rechten passiert ist: Wer hat wem wann welche Rolle gegeben? Wann wurde der Mandant gesperrt?
  • Die CDMS-Historie hält fest, wie Daten aussahen: Welchen Stand hatte dieser Auftrag gestern, und wer hat ihn geändert? Siehe Audit, Historie, Rollback.

Nebeneinander

CIAS-Audit
was mit Personen und Rechten passiert ist
  • ein Eintrag je Ereignis, etwa AuthorizationEvent.Granted
  • eine Tabelle cias_audit_entry in der System-Datenbank, für die ganze Plattform
  • Handelnder: sub und Mandant aus dem Token
  • nur anhängen, kein Zurücksetzen
  • liest nur ein Plattform-Administrator, über AuditQueryUseCase
CDMS-Historie
wie Daten aussahen
  • eine Revision je Änderung, mit dem ganzen Stand des Objekts
  • je Datenbank ein eigenes Revisionsprotokoll, also je Mandant
  • Handelnder: Name, IP-Adresse, Browser; in der Datenbank zusätzlich die Benutzer-ID (sub)
  • ein alter Stand lässt sich zurückholen (Rollback)
  • liest, wer die Historienrolle des Modells hat, über POST /{id}/history

Wo sieht man nach?

Wo steht die Antwort auf meine Frage?
Worum geht es?Nachsehen in
Wer hat dieser Person die Rolle gegeben, und wann?CIAS-Audit, AuthorizationEvent.Granted
Seit wann ist der Mandant gesperrt, und wer war es?CIAS-Audit, TenantEvent.Suspended
Wann hat sich diese Person registriert?CIAS-Audit, RegistrationEvent.Initiated und Completed
Wer hat den Preis dieses Auftrags geändert, und was stand vorher drin?CDMS-Historie des Auftrags
Wie sah der Kunde vor einer Woche aus?CDMS-Historie, eventuell Rollback
Durfte die Person, die den Auftrag geändert hat, das damals?beides: Zeitpunkt und Name aus der CDMS-Historie, dann im CIAS-Audit die Rollenvergaben dieser Person bis zu diesem Zeitpunkt

Beide verbinden

Durfte Ben am 22.09. den Auftrag ändern?
  1. 1
    Admin→CDMS
    liest die Historie des Auftrags: Revision 57 am 22.09. um 10:02, username Ben Beispiel
  2. 2
    Admin→CIAS
    sucht Bens Benutzerdatensatz und liest das Audit: Einträge AuthorizationEvent.Granted, Revoked, Expired mit Bens userId bis 10:02
  3. 3
    Admin
    order-edit wurde am 20.09. vergeben und erst am 25.09. entzogen
    Ergebnis: Ben hatte das Recht zum Zeitpunkt der Änderung

Achte auf die Namen und IDs: Die CDMS-Historie liefert den Namen aus dem Token (username); die Benutzer-ID (sub) steht nur in der Tabelle revinfo der Datenbank. Nach einem Benutzerwechsel ist username die Person, in deren Namen gehandelt wurde, und actingUsername die Person, die tatsächlich gehandelt hat. Als Handelnder im CIAS-Audit steht die Keycloak-ID (sub). In den Rollenereignissen steht als userId die ID des Benutzerdatensatzes in CIAS. Den Übergang findest du im Benutzerdatensatz, der Keycloak-ID, Name und CIAS-ID führt, siehe Der Benutzerdatensatz.

Fallen

Weiter

Quellen im Code und in der Wissensdatenbank
  • CIAS/cias-audit – DomainEventAuditListener, AuditEntry, V1__cias_audit_entry.sql, AuditService
  • CDMS/cdms-persistence-database – auditing/AuditRevisionEntity (revinfo), AuditRevisionListener, AuditHistoryReader
  • CIAS/cias-authentication – JwtSessionFilter, TokenParser (userId aus sub)
  • CIAS/cias-audit/docs/adr – ADR-033
Suchen