dms: Audit-Log-Schreiben fuer nexarch_app-Login-Rollen (Migration 0036) + Test repariert #402

Merged
patrick merged 1 commits from fix/dms-audit-sequence-grant into main 2026-10-28 11:31:58 +01:00
Owner

Befund (gegen Wegwerf-Postgres 17 nachgestellt)

Migration 0013 vergibt nexarch_app nur INSERT, SELECT auf audit_log. Eine Login-Rolle, die Mitglied von nexarch_app und nicht Tabelleneigentuemerin ist (wie 0013 es fuer den DMS-Prozess vorsieht), scheitert bei jedem INSERT mit permission denied for sequence audit_log_id_seq, weil id eine BIGSERIAL-Spalte ist. Nachgestellt: Tabelle und 0013 als Eigentuemer-Rolle, INSERT als app_login IN ROLE nexarch_app -> Fehler; nach GRANT USAGE ON SEQUENCE audit_log_id_seq TO nexarch_app -> INSERT 0 1.

Aenderung

  • Neue Migration 0036_audit_log_sequence_grant (up: GRANT USAGE ON SEQUENCE audit_log_id_seq TO nexarch_app, down: REVOKE).
  • audittrail/append_only_test.go (rot auf main mit relation audit_log does not exist): Der Test legt die Tabelle im Isolations-Schema an, die Login-Rolle hatte kein USAGE auf dieses Schema und keines auf die Sequenz. Setup vergibt beides (spiegelt jetzt die Migration).

Auswirkungen (Pflicht-Review)

  • Betrieb: Auf Bestandssystemen mit separater Login-Rolle schreibt der DMS-Prozess erst nach dieser Migration ins Audit-Log (falls er das bisher nicht konnte, ist es ein stiller Ausfall gewesen; bitte Audit-Log auf Luecken pruefen). Die Migration gibt keine zusaetzlichen Tabellenrechte, UPDATE/DELETE bleiben verboten.
  • Reine Rechtevergabe, idempotent.

Tests

204 gegen Wegwerf-Postgres: audittrail und migrate (inkl. Migrationsdurchlauf up/down) ok; der Fehler vorher mit permission denied for sequence reproduziert.

🤖 Generated with Claude Code

## Befund (gegen Wegwerf-Postgres 17 nachgestellt) Migration 0013 vergibt `nexarch_app` nur `INSERT, SELECT` auf `audit_log`. Eine Login-Rolle, die Mitglied von `nexarch_app` und nicht Tabelleneigentuemerin ist (wie 0013 es fuer den DMS-Prozess vorsieht), scheitert bei jedem INSERT mit `permission denied for sequence audit_log_id_seq`, weil `id` eine BIGSERIAL-Spalte ist. Nachgestellt: Tabelle und 0013 als Eigentuemer-Rolle, INSERT als `app_login IN ROLE nexarch_app` -> Fehler; nach `GRANT USAGE ON SEQUENCE audit_log_id_seq TO nexarch_app` -> `INSERT 0 1`. ## Aenderung - Neue Migration `0036_audit_log_sequence_grant` (up: `GRANT USAGE ON SEQUENCE audit_log_id_seq TO nexarch_app`, down: REVOKE). - `audittrail/append_only_test.go` (rot auf main mit `relation audit_log does not exist`): Der Test legt die Tabelle im Isolations-Schema an, die Login-Rolle hatte kein `USAGE` auf dieses Schema und keines auf die Sequenz. Setup vergibt beides (spiegelt jetzt die Migration). ## Auswirkungen (Pflicht-Review) - Betrieb: Auf Bestandssystemen mit separater Login-Rolle schreibt der DMS-Prozess erst nach dieser Migration ins Audit-Log (falls er das bisher nicht konnte, ist es ein stiller Ausfall gewesen; bitte Audit-Log auf Luecken pruefen). Die Migration gibt keine zusaetzlichen Tabellenrechte, UPDATE/DELETE bleiben verboten. - Reine Rechtevergabe, idempotent. ## Tests 204 gegen Wegwerf-Postgres: `audittrail` und `migrate` (inkl. Migrationsdurchlauf up/down) ok; der Fehler vorher mit `permission denied for sequence` reproduziert. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
patrick added 1 commit 2026-10-28 10:28:12 +01:00
dms: USAGE auf audit_log_id_seq fuer nexarch_app (Migration 0036), Test mit Schema-Rechten
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Canceled after 0s
CI / Web (dms-browser) (pull_request) Canceled after 0s
CI / Web (pdf-viewer) (pull_request) Canceled after 0s
CI / Web (shl) (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (push) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Canceled after 0s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Canceled after 0s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
DB-Integrationstests / db-tests (pull_request) Canceled after 0s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Canceled after 0s
0d1721f169
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
patrick merged commit a458ff6f95 into main 2026-10-28 11:31:58 +01:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: scripte/nexarch#402