Technische und organisatorische Maßnahmen (TOMs) – flowgeist FOOD
Stand: 08.08.2026
Version: 1.0
Geltungsbereich: Art. 32 DSGVO, Art. 28 Abs. 3 lit. c DSGVO
1. Zutrittskontrolle
Die physische Zugriffskontrolle auf die Server-Infrastruktur und die Geschäftsräume von flowgeist wird durch folgende Maßnahmen sichergestellt:
(1) Rechenzentrum (Hetzner Online GmbH, Falkenstein)
- Zutrittskontrolle durch das Rechenzentrum gemäß ISO 27001 Zertifizierung von Hetzner
- Mehrstufige Zutrittskontrolle (Badge, Biometrie, Personenschleuse)
- Videoüberwachung der Zugangswege und Serverräume
- 24/7 Security-Personal vor Ort
- Protokollierung aller Zutritte
(2) Geschäftsräume flowgeist
- Zugriff auf Geschäftsräume nur für autorisierte Personen
- Schließsystem mit Protokollierung
- Keine physische Server-Infrastruktur in den Geschäftsräumen (Cloud-only)
(3) Geräte
- Zugriff auf Arbeitsgeräte (Laptops, Mobiltelefone) durch Passwort/Biometrie geschützt
- Festplattenverschlüsselung (BitLocker / FileVault) auf allen Arbeitsgeräten
- Automatische Bildschirmsperre nach Inaktivität (5 Minuten)
2. Zugriffskontrolle
Die Zugriffskontrolle stellt sicher, dass nur autorisierte Personen Zugang zu personenbezogenen Daten erhalten und dass die Zugriffsrechte nach dem Need-to-know-Prinzip vergeben werden.
(1) Authentifizierung
- Authentifizierung über JWT (JSON Web Tokens) mit Refresh-Token-Rotation
- Apple Sign-In und Google Sign-In als Authentifizierungsverfahren
- Keine Passwort-basierte Authentifizierung (Vermeidung von Passwort-Risiken)
- MFA (Multi-Faktor-Authentifizierung) optional für administrative Zugänge
(2) Rollenbasierte Zugriffskontrolle (RBAC)
- Vergabe von Zugriffsrechten nach dem Role-Based Access Control (RBAC) Modell
- Differenzierung zwischen Nutzer-Rolle und Administrator-Rolle
- Least-Privilege-Prinzip: Jeder Rolle werden nur die minimal erforderlichen Rechte zugewiesen
- Regelmäßige Überprüfung der Zugriffsrechte (mindestens jährlich)
(3) Administrative Zugänge
- Zugriff auf Produktionsumgebung nur über verschlüsselte Verbindungen (SSH mit Key-basierter Authentifizierung)
- MFA für alle administrativen Zugänge
- Protokollierung aller administrativen Zugriffe (Audit-Trail)
- Trennung von Entwicklungs-, Staging- und Produktionsumgebung
(4) Nutzer-Isolation
- Jeder Nutzer hat nur Zugriff auf seine eigenen Daten
- Datenbank-Abfragen sind nutzerbezogen isoliert (Multi-Tenant mit Row-Level-Security in PostgreSQL)
- Kein Cross-User-Zugriff möglich
3. Übertragungskontrolle
Die Übertragungskontrolle stellt sicher, dass personenbezogene Daten bei der Übertragung vor unbefugtem Zugriff, Verfälschung und Offenlegung geschützt sind.
(1) Transportverschlüsselung
- TLS 1.3 für alle Datenübertragungen (Client-Server, Server-Server)
- Ausschaltung älterer TLS-Versionen (TLS 1.0, 1.1, 1.2 deaktiviert)
- Perfect Forward Secrecy (PFS) durch ECDHE-Schlüsselaustausch
(2) HSTS (HTTP Strict Transport Security)
- HSTS aktiviert für alle Verbindungen zur flowgeist FOOD App
- Include-Subdomains und Preload-Liste aktiviert
- Mindest-TLS-Version 1.3
(3) Zertifikate
- TLS-Zertifikate durch Let’s Encrypt
- Automatische Zertifikats-Erneuerung (90-Tage-Zyklus)
- Zertifikats-Pinning in der Native App (iOS/Android)
(4) API-Sicherheit
- Alle API-Endpunkte über TLS 1.3
- Authentifizierung für alle API-Aufrufe erforderlich (JWT)
- Rate-Limiting zum Schutz vor Brute-Force-Angriffen
- CORS-Restrictions (Cross-Origin Resource Sharing)
4. Eingabekontrolle
Die Eingabekontrolle stellt sicher, dass alle Eingaben und Änderungen an personenbezogenen Daten nachvollziehbar protokolliert werden.
(1) Audit-Trail
- Vollständige Protokollierung aller Zugriffe auf und Änderungen an personenbezogenen Daten
- Protokollierung von: Benutzer-ID, Zeitstempel, Aktion (Create, Read, Update, Delete), betroffene Datenkategorie, IP-Adresse
- Audit-Logs werden in einer separaten, schreibgeschützten Datenbank gespeichert
(2) WORM-Logs (Write Once, Read Many)
- Audit-Logs werden als WORM-Logs gespeichert (einmal beschreibbar, danach nur lesbar)
- Manipulationssicherheit durch kryptografische Verfahren (Hash-Chain)
- Logs können nachträglich nicht verändert oder gelöscht werden
(3) Verschärfte Protokollierung bei Gesundheitsdaten
- Zusätzliche Protokollierung für alle Zugriffe auf Gesundheitsdaten (Art. 9 DSGVO)
- Separate Audit-Logs für Art. 9 Daten mit erweitertem Detailgrad
- Alerting bei ungewöhnlichen Zugriffsmustern auf Gesundheitsdaten
(4) Aufbewahrung
- Audit-Logs werden 3 Jahre aufbewahrt
- WORM-Logs werden nach Ablauf der Aufbewahrungsfrist automatisch gelöscht
5. Auftragskontrolle
Die Auftragskontrolle stellt sicher, dass Daten, die im Auftrag verarbeitet werden, nur gemäß den Weisungen des Verantwortlichen verarbeitet werden.
(1) Weisungsbindung
- Alle Verarbeitungsvorgänge erfolgen ausschließlich nach dokumentierten Weisungen
- Weisungen werden in Textform dokumentiert und archiviert
- Keine Verarbeitung außerhalb der erteilten Weisungen
(2) Unter-Auftragsverarbeiter
- Beauftragung von Unter-Auftragsverarbeitern nur mit vorheriger Zustimmung
- AVV mit allen Unter-Auftragsverarbeitern gemäß Art. 28 Abs. 4 DSGVO
- Regelmäßige Überprüfung der Unter-Auftragsverarbeiter auf Einhaltung der TOMs
(3) Trennung von Umgebungen
- Strikte Trennung von Entwicklungs-, Staging- und Produktionsumgebung
- Keine produktiven Daten in Entwicklungs- oder Testumgebungen
- Anonymisierte oder synthetische Testdaten für Entwicklung
(4) Dokumentation
- Vollständige Dokumentation aller Verarbeitungsvorgänge
- Verarbeitungsverzeichnis gemäß Art. 30 DSGVO wird geführt und aktuell gehalten
6. Verfügbarkeitskontrolle
Die Verfügbarkeitskontrolle stellt sicher, dass personenbezogene Daten vor versehentlicher Zerstörung oder Verlust geschützt sind und die Verfügbarkeit der App gewährleistet wird.
(1) Backups
- Tägliche vollständige Backups der PostgreSQL 16 Datenbank
- Inkrementelle Backups stündlich
- Backup-Aufbewahrung: 30 Tage (Tages-Backups), 12 Wochen (Wochen-Backups)
- Backup-Verifizierung durch regelmäßige Restore-Tests (monatlich)
(2) Verschlüsselte Backups
- Alle Backups werden mit AES-256 verschlüsselt
- Backup-Schlüssel werden getrennt von den Backup-Daten gespeichert (Key Management)
- Backups werden in einem separaten Rechenzentrum / separaten Storage gespeichert
(3) MinIO Object Storage
- Foto-Daten werden in MinIO Object Storage gespeichert
- MinIO mit Server-Side Encryption (SSE-S3 kompatibel, AES-256)
- Bucket-Versionierung aktiviert (Schutz vor versehentlichem Löschen)
- Lifecycle-Policies für automatische Bereinigung
(4) Redis Cache
- Redis als In-Memory-Cache für Session-Management und Performance
- Redis Persistence aktiviert (AOF - Append Only File)
- Redis-Daten enthalten keine Gesundheitsdaten (nur Session/Caching-Daten)
- Automatisches Failover bei Redis-Ausfall
(5) Hochverfügbarkeit
- Redundante Server-Infrastruktur bei Hetzner
- Load-Balancing für App-Server
- Automatisches Failover bei Server-Ausfall
- Monitoring und Alerting 24/7
(6) Disaster Recovery
- Disaster Recovery Plan dokumentiert
- Recovery Time Objective (RTO): 4 Stunden
- Recovery Point Objective (RPO): 1 Stunde
- Regelmäßige Disaster Recovery Tests (halbjährlich)
7. Trennungskontrolle
Die Trennungskontrolle stellt sicher, dass Daten, die für unterschiedliche Zwecke verarbeitet werden, getrennt verarbeitet werden können.
(1) Multi-Tenant (Nutzer-Isolation)
- Strikte Isolation der Daten einzelner Nutzer (Multi-Tenant-Architektur)
- Row-Level-Security (RLS) in PostgreSQL 16 auf Tabellenebene
- Jede Datenbank-Abfrage ist nutzerbezogen eingeschränkt
- Kein Cross-User-Zugriff möglich
(2) MinIO Bucket-Isolation
- Foto-Daten werden in separaten MinIO-Buckets pro Nutzer gespeichert
- Bucket-Policies verhindern den Zugriff auf fremde Buckets
- Zugriff nur über authentifizierte und autorisierte API-Aufrufe
(3) Trennung nach Datenkategorien
- Gesundheitsdaten (Art. 9 DSGVO) werden in separaten Datenbank-Schemas gespeichert
- Zusätzliche Anwendungsebenen-Verschlüsselung für Gesundheitsdaten-Felder
- Trennung von Audit-Logs und Produktionsdaten (separate Datenbank)
- Trennung von Entwicklungs-, Staging- und Produktionsdaten
(4) Log-Trennung
- Audit-Logs werden getrennt von Anwendungs-Logs gespeichert
- Sentry Error-Tracking erhält keine Gesundheitsdaten (PII-Minimierung)
- System-Logs enthalten keine personenbezogenen Stammdaten
8. Verschlüsselung
Die Verschlüsselung stellt sicher, dass personenbezogene Daten sowohl bei der Übertragung als auch im Ruhezustand (at rest) geschützt sind.
(1) Transportverschlüsselung
- TLS 1.3 für alle Datenübertragungen
- Perfect Forward Secrecy (PFS)
- HSTS aktiviert
- Zertifikate durch Let’s Encrypt mit automatischer Erneuerung
(2) Verschlüsselung at rest – Datenbank
- PostgreSQL 16 mit Transparent Data Encryption (TDE) oder Volume-Level Encryption
- AES-256 Verschlüsselung für Datenbank-Volumes
- Datenbank-Backups AES-256 verschlüsselt
(3) Verschlüsselung at rest – MinIO Object Storage
- MinIO Server-Side Encryption (SSE) mit AES-256
- Foto-Daten werden verschlüsselt gespeichert
- Bucket-Versionierung und Lifecycle-Policies
(4) Verschlüsselung at rest – Redis
- Redis-Daten auf verschlüsseltem Volume gespeichert
- Redis enthält keine Gesundheitsdaten (nur Session/Caching-Daten)
(5) Schlüsselmanagement
- Zentrale Schlüsselverwaltung (Key Management System)
- Regelmäßige Schlüsselrotation (mindestens jährlich)
- Trennung von Schlüsseln und verschlüsselten Daten
- Zugriff auf Schlüssel nur durch autorisierte Administratoren (MFA)
(6) Passwort-Hashing
- Argon2id als Hashing-Verfahren für Passwörter (sofern Passwort-basierte Verfahren verwendet werden)
- Parameter: memory cost, time cost und parallelism gemäß aktuellen OWASP-Empfehlungen
9. Pseudonymisierung
Die Pseudonymisierung stellt sicher, dass personenbezogene Daten ohne Hinzuziehung zusätzlicher Informationen nicht mehr einer spezifischen betroffenen Person zugeordnet werden können.
(1) Token-basierte Authentifizierung
- JWT-basierte Authentifizierung ohne Speicherung von Klartext-Passwörtern
- Apple/Google Sign-In Token als Pseudonym
- Keine direkte Verknüpfung von Authentifizierungs-Token und Stammdaten
(2) Sentry Error-Tracking
- PII-Minimierung: Sentry erhält keine personenbezogenen Stammdaten oder Gesundheitsdaten
- Fehlerberichte enthalten nur minimierte, pseudonymisierte Daten
- IP-Adressen werden vor Übermittlung an Sentry maskiert oder entfernt
(3) Audit-Logs
- Audit-Logs verwenden Nutzer-IDs (Pseudonyme) statt Klartext-Namen
- Zuordnung von Nutzer-ID zu Stammdaten nur durch autorisierte Administratoren möglich
(4) Daten-Trennung
- Gesundheitsdaten werden getrennt von Stammdaten gespeichert
- Verknüpfung nur über pseudonymisierte IDs
- Zusätzliche Anwendungsebenen-Verschlüsselung für Gesundheitsdaten
10. Regelmäßige Überprüfung
Die regelmäßige Überprüfung stellt sicher, dass die Wirksamkeit der technischen und organisatorischen Maßnahmen kontinuierlich evaluiert und verbessert wird.
(1) Überprüfungszyklus
- Jährliche Überprüfung der TOMs auf Aktualität und Wirksamkeit
- Überprüfung nach wesentlichen Änderungen der Systemarchitektur
- Überprüfung nach Sicherheitsvorfällen
(2) Sicherheits-Audits
- Regelmäßige Sicherheits-Audits (mindestens jährlich)
- Penetration Testing durch externe Dienstleister (jährlich)
- Vulnerability Scanning (automatisiert, wöchentlich)
(3) Patch-Management
- Regelmäßige Updates und Patches für alle Systemkomponenten
- Security-Patches werden priorisiert und unverzüglich eingespielt
- Monitoring von Security-Advisories (CVE-Datenbanken)
(4) Incident Response
- Dokumentierter Incident Response Plan
- Sicherheitsvorfälle werden klassifiziert und nach Schweregrad behandelt
- Post-Incident-Review nach jedem Sicherheitsvorfall
- Dokumentation und Reporting gemäß Art. 33 DSGVO
(5) Mitarbeiterschulung
- Regelmäßige Datenschutz- und Sicherheitsschulungen für alle Mitarbeiter
- Awareness-Training für Social Engineering und Phishing
- Schulung bei wesentlichen Änderungen der Systemarchitektur
(6) ISO 27001 Ausrichtung
- Die TOMs sind an den Anforderungen der ISO 27001 ausgerichtet
- Kontinuierliche Verbesserung im Sinne des PDCA-Zyklus (Plan-Do-Check-Act)
11. Unter-Auftragsverarbeiter
Die folgenden Unter-Auftragsverarbeiter werden im Rahmen der flowgeist FOOD App eingesetzt:
| Unter-Auftragsverarbeiter | Standort | Zweck | Drittstaaten-Transfer | Schutzmechanismus |
|---|
| Hetzner Online GmbH | Falkenstein, Deutschland (DE) | Hosting, PostgreSQL 16, MinIO Object Storage, Redis Cache | Keine (EU) | ISO 27001 Zertifizierung, AVV |
| Mistral AI SAS | Frankreich (FR) | Mistral Vision API für foto-basierte Lebensmittel-Analyse | Keine (EU-only) | EU-Mitgliedstaat, DSGVO unmittelbar anwendbar, AVV |
| Sentry (Functional Software, Inc.) | USA (US) | Error-Tracking, Fehlerdiagnose | EU-US DPF + SCC | EU-US Data Privacy Framework + Standard Contractual Clauses, PII-Minimierung |
(1) Hetzner Online GmbH
- ISO 27001 zertifiziertes Rechenzentrum in Falkenstein, Deutschland
- Alle Datenbanken, Object Storage und Cache werden hier betrieben
- Keine Drittstaatenübermittlung
- AVV gemäß Art. 28 Abs. 4 DSGVO abgeschlossen
(2) Mistral AI SAS
- Mistral Vision API für die foto-basierte Lebensmittel-Analyse
- Sitz in Frankreich (EU-Mitgliedstaat), keine Drittstaatenübermittlung
- DSGVO ist unmittelbar anwendbar
- AVV gemäß Art. 28 Abs. 4 DSGVO abgeschlossen
- Foto-Daten werden nach Analyse gelöscht (keine dauerhafte Speicherung bei Mistral)
(3) Sentry (Functional Software, Inc.)
- Error-Tracking zur Fehlerdiagnose und -behebung
- Sitz in den USA (Drittstaat)
- Schutzmechanismen: EU-US Data Privacy Framework (DPF) + Standard Contractual Clauses (SCC)
- PII-Minimierung: Es werden keine Gesundheitsdaten (Art. 9 DSGVO) oder personenbezogene Stammdaten an Sentry übermittelt
- AVV gemäß Art. 28 Abs. 4 DSGVO abgeschlossen
12. Besonderheiten bei Gesundheitsdaten (Art. 9 DSGVO)
Aufgrund der Verarbeitung von Gesundheitsdaten im Sinne von Art. 9 Abs. 1 DSGVO (Allergien, Unverträglichkeiten, Ernährungsziele, gesundheitsbezogene Ernährungsdaten) gelten verschärfte Schutzmaßnahmen:
(1) Zusätzliche Anwendungsebenen-Verschlüsselung für Gesundheitsdaten-Felder
- Gesundheitsdaten werden auf Anwendungsebene zusätzlich zur Datenbank-Verschlüsselung verschlüsselt (Field-Level Encryption)
- Verwendetes Verfahren: AES-256-GCM
- Schlüssel werden getrennt von den verschlüsselten Daten gespeichert (Envelope Encryption)
- Entschlüsselung nur im Anwendungsprozess mit autorisiertem Kontext
(2) Verschärfte Audit-Logs für Zugriff auf Art. 9 Daten
- Separates Audit-Log-System für alle Zugriffe auf Gesundheitsdaten
- Protokollierung von: Benutzer-ID, Zeitstempel (Millisekunden-Genauigkeit), Aktion, Feld, IP-Adresse, Session-ID
- Echtzeit-Alerting bei ungewöhnlichen Zugriffsmustern (z. B. Massen-Export, Zugriff außerhalb der Nutzungszeiten)
- Audit-Logs als WORM-Logs (manipulationssicher)
- Aufbewahrung: 3 Jahre
(3) Einwilligungs-Protokollierung mit Zeitstempel und Widerrufsmöglichkeit
- Jede Einwilligung zur Verarbeitung von Gesundheitsdaten wird vollständig protokolliert:
- Zeitstempel der Einwilligung
- Version der Einwilligungserklärung
- IP-Adresse zum Zeitpunkt der Einwilligung
- Benutzer-ID
- Umfang der Einwilligung (welche Datenkategorien)
- Widerruf der Einwilligung ist jederzeit möglich (in-App und per E-Mail)
- Widerruf wird ebenfalls protokolliert (Zeitstempel, IP-Adresse)
- Bei Widerruf erfolgt sofortige Löschung der betroffenen Gesundheitsdaten
(4) Daten-Trennung
- Gesundheitsdaten werden in separaten Datenbank-Schemas gespeichert
- Strikte Trennung von Stammdaten und Gesundheitsdaten
- Verknüpfung nur über pseudonymisierte IDs
(5) Keine Übermittlung an Drittstaaten
- Gesundheitsdaten werden ausschließlich in Deutschland (Hetzner) und Frankreich (Mistral AI, EU) verarbeitet
- Keine Übermittlung von Gesundheitsdaten an Sentry (USA) oder andere Drittstaaten
- Sentry Error-Tracking ist so konfiguriert, dass Gesundheitsdaten herausgefiltert werden (Data Scrubbing)
(6) Zugriffsbegrenzung
- Zugriff auf Gesundheitsdaten nur durch autorisierte Rollen (Least-Privilege-Prinzip)
- Kein administrativer Zugriff auf entschlüsselte Gesundheitsdaten ohne explizite Berechtigung
- Notfall-Zugriffe werden gesondert protokolliert und erfordert Nachweis
13. Änderungshistorie
| Version | Datum | Wesentliche Änderungen |
|---|
| 1.0 | 08.08.2026 | Erstfassung der TOMs für flowgeist FOOD |