Audit-Log
Ein unveränderliches, prüfbares Protokoll aller Änderungen und Lesezugriffe.
Hash-Kette
Je Einrichtung und Monat führt score eine Kette von Ereignissen. Jedes Ereignis enthält den
kanonischen Inhalt – Zeit, Konto, Request-ID, Kategorie, Aktion, betroffene Objekte und Personen,
alter und neuer Wert – und den Hash sha256(vorheriger Hash || Inhalt). Wer ein Ereignis ändert,
löscht oder einfügt, bricht die Kette.
Was protokolliert wird
| Art | Wie | Inhalt |
|---|---|---|
| Änderungen an Noten, Halbjahresnoten, Leistungen, Entsperrungen | Trigger in derselben Transaktion | alter und neuer Wert |
| Lesezugriffe auf Raster, Einsicht, Gastschülernoten | aus score-api | Objekt und Betroffene, keine Werte |
| Anmeldung, Abmeldung, zentrale Abmeldung | aus score-api | Konto, Identitätsanbieter |
| Import-Übernahme, Export | als Massenvorgang | Zusammenfassung |
Ein Test verlangt für jede Tabelle, in die die Anwendung schreiben darf, einen Audit-Trigger oder eine begründete Ausnahme.
Unveränderlich
- Geschrieben wird nur über eine Datenbankfunktion; die Anwendungsrolle hat keine Rechte an den Tabellen. Akteur und Request-ID setzt score-api aus dem Kontext, nicht aus Argumenten.
UPDATEundDELETEsperrt ein Trigger für alle Rollen.- Beim Abschluss eines Monats wird der letzte Hash als Anker festgehalten, im Betrieb zusätzlich in S3 mit Object Lock.
Prüfen und lesen
Die Prüfung findet Lücken, gebrochene Verkettung, Inhalte, die nicht zu ihrem Hash passen, und Abweichungen vom Anker. Lesen darf nur die Rolle Datenschutz/Revision der Einrichtung – eigene Einträge sieht niemand.
score-api audit verify [-einrichtung K]
score-api audit abschliessen [-anker datei]
score-api audit export -einrichtung K -o datei
Der Export ist JSON Lines mit Inhalt und Hashes und lässt sich unabhängig von score prüfen.