score

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.
  • UPDATE und DELETE sperrt 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.