docs(PROJ-83): Ticket für Audit-Logging bei Anhang-Abrufen angelegt

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
This commit is contained in:
sysops
2026-08-06 18:30:25 +02:00
co-authored by Claude Sonnet 5
parent bd427a944e
commit ca693ded1b
3 changed files with 45 additions and 1 deletions
+2 -1
View File
@@ -98,7 +98,8 @@
| PROJ-80 | Dark Mode Vervollständigung (Konsistenz + Default/Persistenz) | In Review | [PROJ-80](PROJ-80-dark-mode-vervollstaendigung.md) | 2026-08-06 |
| PROJ-81 | Anhang-Online-Vorschau (PDF, Bilder) | In Review | [PROJ-81](PROJ-81-anhang-online-vorschau.md) | 2026-08-06 |
| PROJ-82 | Print-Farbparität zwischen Hell- und Dark-Mode-Ausdrucken | Planned | [PROJ-82](PROJ-82-print-farbparitaet-dark-mode.md) | 2026-08-06 |
| PROJ-83 | Audit-Logging für Anhang-Abrufe (GoBD/DSGVO-Nachbesserung) | Planned | [PROJ-83](PROJ-83-audit-log-anhang-abrufe.md) | 2026-08-06 |
<!-- Add features above this line -->
## Next Available ID: PROJ-83
## Next Available ID: PROJ-84
@@ -0,0 +1,42 @@
# 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)
---
<!-- Sections below are added by subsequent skills -->
## Tech Design (Solution Architect)
_To be added by /architecture_
## QA Test Results
_To be added by /qa_
## Deployment
_To be added by /deploy_
+1
View File
@@ -86,4 +86,5 @@ export const features: Feature[] = [
{ id: "PROJ-80", name: "Dark Mode Vervollständigung (Konsistenz + Default/Persistenz)", status: "In Review", frontend: true, backend: false, lastUpdated: "2026-08-06", version: "1.0" },
{ id: "PROJ-81", name: "Anhang-Online-Vorschau (PDF, Bilder)", status: "In Review", frontend: true, backend: false, lastUpdated: "2026-08-06", version: "1.0" },
{ id: "PROJ-82", name: "Print-Farbparität zwischen Hell- und Dark-Mode-Ausdrucken", status: "Planned", frontend: true, backend: false, lastUpdated: "2026-08-06", version: "1.0" },
{ id: "PROJ-83", name: "Audit-Logging für Anhang-Abrufe (GoBD/DSGVO-Nachbesserung)", status: "Planned", frontend: false, backend: true, lastUpdated: "2026-08-06", version: "1.0" },
];