# 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 `handleGetAttachment` fehlt - 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_