Files
fotospiel-app/docs/ops/compliance-dsgvo-ops.md
2025-11-20 12:31:21 +01:00

91 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: DSGVO & Compliance-Operationen
sidebar_label: DSGVO-Operationen
---
Dieses Runbook beschreibt praktische Abläufe für DatenschutzAnfragen, Datenlöschung und Aufbewahrungsfristen.
## 1. Grundprinzipien
- Gäste benötigen kein Konto; die meisten Daten sind Event und Fotobezogen.
- Tenant Admins sind in der Regel Verantwortliche im Sinne der DSGVO, Fotospiel fungiert als Auftragsverarbeiter (je nach Vertragsmodell).
- Rechtsgrundlagen, Impressum und Datenschutzerklärungen werden über die LegalPages im Admin verwaltet dieses Dokument fokussiert sich auf **Betriebsprozesse**.
## 2. Typische Anfragen & Aktionen
- **Auskunftsanfragen**
- Gast möchte wissen, ob Fotos von ihm/ihr gespeichert sind.
- Typischer Ablauf:
- Gast an Tenant verweisen (wenn Veranstalter Ansprechpartner ist).
- Falls Fotospiel direkt handeln muss: Event/FotoIDs anhand bereitgestellter Infos identifizieren (z.B. Link, Screenshot, Zeitfenster).
- Relevante Datensätze in DB (Fotos, Likes, Meldungen) lokalisieren und dokumentieren.
- **Löschanfragen**
- Ein Gast/Tenant bittet um Löschung spezifischer Fotos oder eines ganzen Events.
- Vorgehen:
1. Identität und Berechtigung prüfen (z.B. Tenant Admin, verifizierte Anfrage).
2. Fotos/Ereignisse über Admin UI oder interne Tools löschen/archivieren.
- Sicherstellen, dass `event_media_assets` und ArchivSpeicher ebenfalls bereinigt werden.
3. Prüfen, ob Logs/Audits pseudonymisiert bleiben können, ohne personenbezogene Inhalte.
4. Anfrage und Zeitpunkt dokumentieren (Ticket, internes Log).
- **Datenexport**
- Tenant will einen Export seiner Daten (Events, Medien, Statistiken).
- Nutzung der vorhandenen ExportFunktionen (z.B. CSV/ZIP im Admin) bevorzugen.
- Falls diese nicht ausreichen, manuelle Exporte via Skript/DB mit Datenschutz im Blick (keine unnötigen Felder).
- Beispiel: nur die Felder exportieren, die für den Zweck der Anfrage wirklich notwendig sind (kein DebugLog, keine internen IDs, sofern nicht sinnvoll).
### 2.1 Konkrete Tools & Endpoints
- **Profil-Datenexport (User-Ebene)**
- Controller: `App\Http\Controllers\ProfileDataExportController`.
- UI: Profilbereich der Tenant Admin PWA; Nutzer kann dort einen Export anstoßen.
- Ablauf:
1. Nutzer triggert Export → `ProfileDataExportController::store()` legt einen `DataExport`Eintrag an (`status = pending`) und dispatcht `GenerateDataExport`.
2. Der Job `GenerateDataExport` erstellt ein ZIP mit relevanten Daten und setzt `status = ready`, `path`, ggf. `expires_at`.
3. Nutzer kann die Datei über `ProfileDataExportController::download()` abrufen, solange `isReady()` und nicht `hasExpired()`.
- Ops-Sicht:
- Wenn Exporte „hängen bleiben“ (lange `pending`/`processing`), Queue/Horizon und Logs prüfen, ggf. Job neu anstoßen.
- Für DSGVOExports bevorzugt diesen Pfad nutzen, statt adhoc DBAbfragen.
- **Account-Anonymisierung (User/Tenant-Ebene)**
- Service: `App\Services\Compliance\AccountAnonymizer`.
- Job: `App\Jobs\AnonymizeAccount` nutzt diesen Service typischerweise im Hintergrund.
- Verhalten:
- Löscht/entfernt Medien (`EventMediaAsset`, `Photo`) für einen Tenant.
- Anonymisiert Tenant und UserDaten (setzt neutrale Namen, entfernt Kontaktinfos, sperrt Accounts).
- Ops-Sicht:
- Nur nach klarer Freigabe einsetzen, da Anonymisierung irreversibel ist.
- Vor Einsatz prüfen, ob für den betreffenden Tenant alle vertraglichen Zusagen (z.B. Datenexport) erfüllt sind.
## 3. Retention & automatisierte Löschung
- **Event-bezogene Aufbewahrung**
- StandardRetentionsfristen für Events/Fotos (z.B. X Tage nach Eventende/Archivierung) laut ProduktSpezifikation.
- Jobs/Kommandos, die nach Ablauf Medien archivieren oder löschen (siehe `docs/ops/media-storage-spec.md`).
- **Logs**
- Aufbewahrungsdauer von ApplikationsLogs (z.B. 3090 Tage), Rotation/Anonymisierung.
- **Konfiguration pro Tenant**
- Wenn Tenants eigene Retention wünschen, prüfen ob das UI/ConfigModel dies unterstützt (nicht adhoc in SQL ändern).
## 4. Operative Checkliste bei DSGVO-Fällen
1. Anfrage klassifizieren (Auskunft, Löschung, Export, Sonstiges).
2. Verantwortlichkeit klären (Tenant vs. Fotospiel).
3. Technische Schritte definieren (welche Events/Fotos/Accounts betroffen).
4. Durchführung:
- In Admin UI oder via internen Tools.
- Medien/Metadaten konsistent behandeln (keine „hängenden“ Records).
5. Dokumentation:
- Ticket/E-MailThread mit Datum, Betreff, Maßnahmen.
6. FollowUp:
- Prüfen, ob Runbooks/Automatisierungen angepasst werden sollten (z.B. besserer SelfService für Tenants).
## 5. Verbindung zu Security-Hardening
Das SecurityHardeningEpic (`docs/process/todo/security-hardening-epic.md`) enthält mehrere Workstreams, die DSGVOrelevant sind:
- Signierte AssetURLs statt direkter StorageLinks.
- Verbesserte Token/AuthFlows.
- StorageHealth und ChecksummenVerifizierung.
Wenn dort neue Features produktiv gehen, sollten die Auswirkungen auf DSGVOProzesse in diesem Runbook ergänzt werden.