Nebenfund aus PROJ-81-QA: handleGetAttachment protokolliert Zugriffe nicht im Audit-Log. Nicht blockierend für PROJ-81-Deploy — Vorschau ändert das gespeicherte Original nicht, nur die Zugriffs-Nachvollzieh- barkeit fehlt (GoBD/DSGVO Art. 30). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WapWkrQusDuBMhaN8WyuXB
2.9 KiB
PROJ-83: Audit-Logging für Anhang-Abrufe (GoBD/DSGVO-Nachbesserung)
Status: Planned
Created: 2026-08-06 Last Updated: 2026-08-06
Kontext
Nebenfund aus dem QA-Review von PROJ-81 (Anhang-Online-Vorschau): handleGetAttachment (internal/api/server.go:226, Route GET /api/mails/{id}/attachments/{index}) protokolliert Zugriffe aktuell nicht im Audit-Log (vgl. PROJ-11 Audit-Log, PROJ-48 Audit-Log-Unveränderbarkeit). Mit PROJ-81 steigt die Zugriffshäufigkeit auf Anhänge deutlich (Vorschau statt nur Download), wodurch die fehlende Protokollierung stärker ins Gewicht fällt. GoBD verlangt Nachvollziehbarkeit des Zugriffs auf aufbewahrungspflichtige Unterlagen, DSGVO Art. 30 verlangt Nachweisbarkeit von Verarbeitungstätigkeiten inkl. Zugriff auf personenbezogene Daten in Anhängen.
Dependencies
- Baut auf PROJ-11 (Audit-Log) und PROJ-48 (Audit-Log-Unveränderbarkeit) auf — Infrastruktur existiert, nur der Aufrufpunkt in
handleGetAttachmentfehlt - Nicht blockierend für PROJ-81-Deploy (Nutzer-Entscheidung 2026-08-06): Vorschau ändert das gespeicherte Original nicht (rein lesender Zugriff, MIME-Rewrap nur clientseitig), GoBD-Unveränderbarkeit der Archivdaten selbst ist dadurch nicht verletzt — die Lücke betrifft ausschließlich die Zugriffs-Nachvollziehbarkeit
User Stories
- Als Auditor will ich im Audit-Log nachvollziehen können, wer wann welchen Anhang abgerufen/angesehen hat.
- Als Admin will ich bei einer DSGVO-Anfrage ("wer hat auf meine Daten zugegriffen") eine vollständige Antwort liefern können, inkl. Anhang-Zugriffen.
Acceptance Criteria
- Jeder Aufruf von
GET /api/mails/{id}/attachments/{index}erzeugt einen Audit-Log-Eintrag (User, Zeitstempel, Mail-ID, Anhang-Index/Dateiname, Tenant) - Fehlgeschlagene Zugriffe (403/404) werden ebenfalls protokolliert, ohne dass die Existenz fremder Mail-IDs zusätzlich verraten wird
- Bestehende Audit-Log-Unveränderbarkeit (PROJ-48) gilt auch für diese neuen Einträge
- Kein messbarer Performance-Einbruch bei Anhang-Abruf durch die zusätzliche Protokollierung (asynchron/gepuffert wie bei bestehenden Audit-Events)
Edge Cases
- Sehr häufige Zugriffe durch Vorschau (mehrfaches Öffnen/Schließen desselben Anhangs) — kein Log-Spam, aber auch keine Deduplizierung, die Nachvollziehbarkeit einschränkt
- Zugriff durch IMAP-Server-Schnittstelle (PROJ-26) statt Web-UI — falls dieser Pfad denselben Handler nutzt, ebenfalls protokollieren
Technical Requirements (optional)
- Kein neues Datenbankschema nötig — bestehende Audit-Log-Tabelle/Struktur (PROJ-11) wiederverwenden
- Security: Log-Eintrag darf bei 403 nicht mehr Information preisgeben als die HTTP-Antwort selbst (siehe Bestandsfund 404-vs-403 aus QA, separat zu behandeln)
Tech Design (Solution Architect)
To be added by /architecture
QA Test Results
To be added by /qa
Deployment
To be added by /deploy