stadtwerke/DSGVO_KONZEPT.md

232 lines
7.6 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.

# InnungsApp — DSGVO & Datenschutzkonzept
---
## 1. Überblick
InnungsApp verarbeitet personenbezogene Daten von:
- Innungsgeschäftsführern und Admins
- Mitgliedsbetrieben (Betriebsinhaber)
- Azubi-Bewerbern (Minderjährige möglich!)
- Auszubildenden (Minderjährige möglich!)
Dies begründet hohe DSGVO-Anforderungen — insbesondere bei Minderjährigen.
---
## 2. Rechtsgrundlagen
| Verarbeitung | Rechtsgrundlage | Artikel DSGVO |
|---|---|---|
| Mitgliederverwaltung | Berechtigtes Interesse der Innung | Art. 6 Abs. 1 lit. f |
| Kommunikation (News) | Berechtigtes Interesse | Art. 6 Abs. 1 lit. f |
| Lehrlingsbörse (Betrieb) | Vertragserfüllung | Art. 6 Abs. 1 lit. b |
| Lehrlingsbörse (Bewerber) | Einwilligung | Art. 6 Abs. 1 lit. a |
| Azubi-Profil (Minderjährige) | Elterliche Einwilligung (< 16 J.) | Art. 8 DSGVO |
| Analytics (PostHog) | Berechtigtes Interesse | Art. 6 Abs. 1 lit. f |
| Push Notifications | Einwilligung | Art. 6 Abs. 1 lit. a |
---
## 3. Datenkategorien & Speicherdauer
### Mitgliedsdaten
| Datenkategorie | Speicherdauer | Begründung |
|---|---|---|
| Name, Betrieb, Kontaktdaten | Mitgliedschaft + 3 Jahre | Handelsrechtliche Aufbewahrungspflicht |
| E-Mail (Auth) | Bis Kontolöschung | Technisch notwendig |
| Push Tokens | Bis Abmeldung / App-Deinstallation | Technisch notwendig |
| Lesestatus (news_reads) | 12 Monate | Analytics, danach Anonymisierung |
| Login-Logs | 30 Tage | Sicherheit |
### Azubi-Bewerber-Daten
| Datenkategorie | Speicherdauer | Begründung |
|---|---|---|
| Bewerberprofil | 6 Monate nach letzter Aktivität | Automatische Löschung |
| Chat-Nachrichten | 90 Tage nach Gesprächsende | Automatische Löschung |
| Video-Views (anonym) | 90 Tage | Analytics |
### Logs & Analytics
| Datenkategorie | Speicherdauer |
|---|---|
| Supabase Auth Logs | 30 Tage |
| PostHog Events | 12 Monate (anonymisiert nach 3 Monaten) |
| Edge Function Logs | 7 Tage |
---
## 4. Auftragsverarbeitung (AVV)
InnungsApp ist **Auftragsverarbeiter** für die Innungen.
Innungen sind **Verantwortliche** für die Daten ihrer Mitglieder.
### AVV-Pflicht
Mit jeder Innung wird ein AVV (Auftragsverarbeitungsvertrag) abgeschlossen:
- Elektronisch im Onboarding-Prozess
- Signatur via Klick-Einwilligung (dokumentiert)
- Bestandteil der AGBs
### AVV-Inhalte (Kernanforderungen)
- Gegenstand und Dauer der Verarbeitung
- Art und Zweck der Verarbeitung
- Art der personenbezogenen Daten
- Kategorien betroffener Personen
- Pflichten und Rechte des Verantwortlichen (Innung)
- Technische und organisatorische Maßnahmen (TOMs)
- Sub-Auftragsverarbeiter (Supabase, Resend, etc.)
---
## 5. Sub-Auftragsverarbeiter
| Anbieter | Zweck | Standort | Datenschutz-Basis |
|---|---|---|---|
| **Supabase** | Datenbank, Auth, Storage | EU (Frankfurt, AWS eu-central-1) | EU-Standardvertragsklauseln |
| **Vercel** | Web-Hosting Admin | USA + EU-Edge | EU-SCC, EU-Daten bleiben in EU |
| **Resend** | Transaktions-E-Mails | USA | EU-SCC |
| **Expo / EAS** | App-Build, Push-Routing | USA | EU-SCC |
| **PostHog** | Analytics | EU (optional) | EU-Hosting wählbar |
| **Mux** | Video-Hosting (Post-MVP) | USA | EU-SCC |
**Wichtig:** Alle kritischen Daten (Mitgliederdaten, Auth) liegen in Supabase Frankfurt (EU). US-Anbieter erhalten nur technisch notwendige Minimal-Daten.
---
## 6. Technische & Organisatorische Maßnahmen (TOMs)
### Vertraulichkeit
- **Datenverschlüsselung in Transit:** TLS 1.3 für alle Verbindungen
- **Datenverschlüsselung at Rest:** AES-256 via Supabase (AWS KMS)
- **Row Level Security:** Strikte Datenisolation auf Datenbankebene
- **JWT-basierte Auth:** Kurzlebige Access Tokens (1 Stunde), Refresh Tokens (7 Tage)
- **Magic Link:** Einmalig verwendbar, 7 Tage gültig
### Integrität
- **Audit Logs:** Alle Admin-Aktionen werden geloggt (wer hat was wann geändert)
- **Backup:** Supabase automatisch täglich (30 Tage Retention im Pro-Plan)
- **Input Validation:** Server-seitige Validierung aller Formulare (Zod Schemas)
### Verfügbarkeit
- **Supabase SLA:** 99,5 % Uptime
- **Multi-AZ:** Supabase verwendet PostgreSQL mit Standby in separater AZ
- **CDN:** Vercel und Supabase Storage mit globalem CDN
### Zugriffskontrolle
- **Role-based Access Control:** `admin` | `member` | `public`
- **Principle of Least Privilege:** Jede Rolle nur Minimalrechte
- **Admin-Zugang:** Nur via Supabase Dashboard mit 2FA
- **Mitarbeiter-Schulung:** Jährliche DSGVO-Unterweisung
---
## 7. Betroffenenrechte
### Auskunftsrecht (Art. 15 DSGVO)
**Prozess:**
1. Betroffene Person sendet E-Mail an datenschutz@innungsapp.de
2. Identität wird verifiziert (Magic Link oder Ausweiskopie)
3. Auskunft innerhalb von 30 Tagen
4. Format: PDF mit allen gespeicherten Daten
### Recht auf Löschung (Art. 17 DSGVO)
**Self-Service in der App:**
- Einstellungen "Konto löschen"
- Sofortige Anonymisierung der personenbezogenen Daten
- Technische Daten werden nach 30 Tagen endgültig gelöscht
- Auth-Account wird sofort gelöscht
**Admin-seitige Löschung:**
- Admin kann Mitglied deaktivieren (kein Datenzugriff)
- Vollständige Löschung auf Anfrage an InnungsApp innerhalb 30 Tage
### Recht auf Datenübertragbarkeit (Art. 20 DSGVO)
- Export als JSON oder CSV auf Anfrage
- Enthält: Profildaten, News-Leseverlauf, Terminanmeldungen, eigene Stellen
### Widerspruchsrecht (Art. 21 DSGVO)
- Push Notifications: jederzeit in App-Einstellungen deaktivierbar
- Analytics: Opt-Out via Einstellungsmenü (PostHog Cookie-freies Tracking)
---
## 8. Besondere Anforderungen: Minderjährige
### Problem
Azubi-Bewerber können 1516 Jahre alt sein Minderjährige nach DSGVO Art. 8.
### Lösung
**Altersabfrage bei Registrierung:**
- "Sind Sie unter 16 Jahre alt?" (Ja / Nein)
- Bei "Ja": Elterliche Einwilligung erforderlich
**Einwilligungs-Flow (unter 16):**
1. App zeigt: "Für Personen unter 16 Jahren benötigen wir die Zustimmung eines Erziehungsberechtigten."
2. E-Mail-Adresse des Erziehungsberechtigten eingeben
3. Erziehungsberechtigter erhält E-Mail mit Einwilligung-Link
4. Nach Bestätigung: Bewerber-Profil freigegeben
**Minimale Datenerhebung bei Minderjährigen:**
- Kein Geburtsdatum gespeichert (nur "unter/über 16")
- Keine Adresse
- Keine Fotos ohne explizite Einwilligung
- Chat: automatische Löschung nach 30 Tagen
---
## 9. Datenschutzerklärung & Impressum
### Pflichtangaben
**Datenschutzerklärung** (auf innungsapp.de + in App abrufbar):
- Verantwortlicher: Timo Knuth, [Adresse]
- Datenschutzbeauftragter: (ab 20 Mitarbeiter oder sensible Daten: Pflicht für MVP: optional)
- Kategorien verarbeiteter Daten
- Zwecke und Rechtsgrundlagen
- Speicherdauer
- Sub-Auftragsverarbeiter
- Betroffenenrechte + Beschwerderecht bei Aufsichtsbehörde
**Aufsichtsbehörde BW:**
Der Landesbeauftragte für den Datenschutz und die Informationsfreiheit Baden-Württemberg
Lautenschlagerstraße 20, 70173 Stuttgart
### Cookie-Policy
- InnungsApp Mobile: keine Cookies (Native App)
- Admin Web: Session Cookie (Supabase Auth) notwendig, kein Banner erforderlich
- Analytics (PostHog): Cookie-freies Tracking (pixel-los) kein Banner erforderlich
---
## 10. Incident Response Plan
### Bei Datenpanne
1. **Erkennung** intern oder via Supabase-Alert
2. **Bewertung** (< 24h): Umfang, betroffene Personen, Risiko
3. **Meldung an Aufsichtsbehörde** (< 72h, Art. 33 DSGVO) wenn Risiko für Betroffene
4. **Benachrichtigung der Betroffenen** wenn hohes Risiko (Art. 34 DSGVO)
5. **Dokumentation** im Verarbeitungsverzeichnis
### Technische Reaktionsmaßnahmen
- Supabase Auth: Alle Sessions ungültig machen (1 Klick)
- Betroffene Innungen isolieren (org_id deaktivieren)
- Logs sichern (vor Löschung durch Rotation)
- Passwörter: nicht relevant (Magic Link, kein Passwort)