Zum Inhalt springen

AA_AUDIT_LOG

Status: Entwurf · Spec-Kandidat: ja

Zweck

Append-only-Protokoll aller fachlich relevanten Änderungen. Pflicht-Anforderung (FR-010, BR-08, AC-006).

Felder

FeldTypPflichtHinweise
idbigserialjaPK
tenant_iduuidneinFK → AA_TENANT, gesetzt für tenant-bezogene Aktionen; NULL für globale Aktionen (z. B. Tenant-Anlage selbst)
entity_nametextjalogischer Tabellenname (z. B. DDM_ENTITY, DDM_ENTITY_TYPE, DDM_ENTITY_RELATION)
entity_iduuidneinDatensatz-ID, falls vorhanden
actionmdm.audit_actionjasiehe Wertebereich
changed_attimestamptzjadefault now()
changed_bytextneinBenutzerkennung (z. B. OIDC sub oder E-Mail)
actor_principal_iduuidneinFK-äquivalent auf AA_APP_USER.id / AA_SERVICE_ACCOUNT.id; auflösbar über mdm.v_principal
reasontextneinoptionale Begründung
correlation_iduuidneinerlaubt Gruppierung zusammenhängender Änderungen
old_datajsonbneinVorher-Wert
new_datajsonbneinNachher-Wert
metadatajsonbjadefault '{}', JSON-Objekt-Constraint

Wertebereich action

Fachliche Aktionen: insert, update, archive, restore, soft_delete, hard_delete, relate, unrelate, version_create.

Sicherheitsrelevante Aktionen: permission_grant, permission_revoke, role_assign, role_unassign, login, access_denied.

Job-/Worker-Lebenszyklus (siehe AA_JOB, Asynchrone Jobs): job_enqueued, job_done, job_dlq, job_replay, job_discard.

Cross-Reference / External-System-Mapping (siehe DDM_ENTITY_EXTERNAL_ID): external_id_link, external_id_unlink. Re-Mapping = unlink + link (zwei Audit-Zeilen, ggf. via correlation_id gekoppelt).

Anhänge / Dokumente (siehe DDM_ATTACHMENT, Anhänge-Verhalten): attachment_uploaded, attachment_scanned, attachment_deleted, attachment_restored, attachment_hard_deleted. Forensik-relevante Felder: metadata.storage_uri, metadata.sha256, metadata.virus_scan_engine.

Email-Outcomes (siehe Email-Schnittstelle, AA_EMAIL_LOG): email_sent, email_sent_dryrun, email_delivered, email_bounced, email_complained, email_suppressed. Pro Audit-Zeile referenziert metadata.email_log_id den passenden AA_EMAIL_LOG-Eintrag.

Constraints

  • audit_log_metadata_is_object_chk

Indizes

  • ix_audit_log_lookup auf (entity_name, entity_id, changed_at DESC)

Verhalten

  • Audit-Einträge werden vom Service-Layer in derselben Transaktion wie die Datenänderung geschrieben. Es gibt keine generischen Audit-Trigger.
  • Mindestinhalt pro Eintrag: Benutzer, Zeitpunkt, Objekt, Aktion, alte Werte, neue Werte, optionale Begründung.
  • Tabelle ist append-only: keine UPDATE-/DELETE-Pfade im Service-Layer; entsprechende Rolle/Privilegien.
  • correlation_id erlaubt Gruppierung mehrerer Audit-Einträge eines fachlichen Vorgangs (z. B. Anlegen einer Entität samt Beziehungen).

Offen

  • Aufbewahrungsfristen (regulatorisch / fachlich) – siehe Offene Punkte.
  • Partitionierung großer Audit-Volumina (z. B. monatlich) ist nicht im DDL festgelegt.
  • Read-Modell für Audit-Suche (Auditor-Rolle) ist noch nicht spezifiziert.

Verwandte Dokumente