232 lines
7.6 KiB
Markdown
232 lines
7.6 KiB
Markdown
# 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 15–16 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)
|