Files
archivmail/features/PROJ-83-audit-log-anhang-abrufe.md
T
sysopsandClaude Sonnet 5 ca693ded1b 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
2026-08-06 18:30:25 +02:00

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 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