Zum Inhalt springen

Technische und Organisatorische Maßnahmen (TOM)

gem. Art. 32 DSGVO — Anlage 1 zum Auftragsverarbeitungsvertrag (AVV)

Stand: März 2026

1. Vertraulichkeit (Art. 32 Abs. 1 lit. b DSGVO)

1.1 Zutrittskontrolle

Maßnahmen, die verhindern, dass Unbefugte Zutritt zu Datenverarbeitungsanlagen erhalten:

  • Serverinfrastruktur wird vollständig in zertifizierten Rechenzentren betrieben (Supabase/AWS eu-central-1, Frankfurt). Physischer Zugang wird vom Rechenzentrumsbetreiber kontrolliert (SOC 2 Type II, ISO 27001).
  • Kein physischer Server-Zugang durch Jobflare-Mitarbeiter erforderlich — vollständig cloudbasierte Infrastruktur.
  • Büroräume der DevNest UG sind durch Schlüsselsystem gesichert.

1.2 Zugangskontrolle

Maßnahmen, die verhindern, dass Unbefugte die Datenverarbeitungssysteme nutzen:

  • Authentifizierung über NextAuth v5 mit Credentials (scrypt-gehashte Passwörter mit Timing-Safe-Vergleich) und OAuth (Google, Microsoft Entra ID).
  • JWT-basierte Sessions mit 30-Tage-Ablauf, HttpOnly- und Secure-Cookies mit __Secure-Prefix in Produktion.
  • E-Mail-Verifizierung erforderlich vor erstem Login.
  • Passwort-Reset über HMAC-SHA256-signierte Tokens mit 1-Stunde-Ablauf und Timing-Safe-Vergleich.
  • Rate Limiting auf Authentifizierungs-Endpoints: 10 Versuche pro 15 Minuten pro IP (persistente DB-basierte Begrenzung).
  • API-Schlüssel werden als SHA-256-Hashes gespeichert (nie im Klartext), mit optionalem Ablaufdatum.

1.3 Zugriffskontrolle

Maßnahmen, die gewährleisten, dass Berechtigte nur auf die ihnen zugeordneten Daten zugreifen können:

  • Multi-Tenant-Architektur: Jede Datenbankabfrage ist durch tenantId isoliert. Kein mandantenübergreifender Datenzugriff möglich.
  • Rollenbasierte Zugriffskontrolle (RBAC) mit drei Rollen: Admin, Editor, Viewer — mit unterschiedlichen Berechtigungen für Stellen, Einstellungen, Team und Bewerbungen.
  • Server-seitige Autorisierungsprüfung in allen API-Routes und Server Actions (session.user.tenantId-Abgleich).
  • Bewerbungsdokumente (Lebensläufe, Anschreiben) werden über zeitlich begrenzte signierte URLs bereitgestellt (1 Stunde Gültigkeit) — kein öffentlicher Dauerzugriff.
  • Super-Admin-Zugang beschränkt auf definierte E-Mail-Adressen (ADMIN_EMAILS Umgebungsvariable).
  • CRON-Endpoints durch CRON_SECRET-Bearer-Token geschützt.

1.4 Trennungskontrolle

Maßnahmen, die gewährleisten, dass zu unterschiedlichen Zwecken erhobene Daten getrennt verarbeitet werden:

  • Logische Datentrennung durch Tenant-ID in allen Datenbanktabellen.
  • Dateispeicherung in Supabase Storage nach Tenant-ID strukturiert: {tenantId}/{kategorie}/{datei}.
  • Strikte Trennung von Produktions- und Entwicklungsumgebungen (separate Datenbanken, separate API-Schlüssel).

2. Integrität (Art. 32 Abs. 1 lit. b DSGVO)

2.1 Weitergabekontrolle

Maßnahmen, die gewährleisten, dass Daten bei der Übertragung nicht unbefugt gelesen, kopiert oder verändert werden:

  • TLS 1.3 für alle Datenübertragungen (HTTPS-only, HSTS mit max-age=63072000).
  • Content Security Policy (CSP) mit frame-ancestors 'none' zum Schutz vor Clickjacking.
  • X-Content-Type-Options: nosniff, X-Frame-Options: DENY, Referrer-Policy: strict-origin-when-cross-origin.
  • Webhook-Zustellung an Kundenendpunkte mit HMAC-SHA256-Signatur (X-Jobflare-Signature Header).
  • Stripe-Webhook-Verifizierung über stripe.webhooks.constructEvent().
  • E-Mail-Versand über Resend mit SPF/DKIM-Konfiguration für jobflare.de.

2.2 Eingabekontrolle

Maßnahmen, die gewährleisten, dass nachträglich festgestellt werden kann, ob und von wem Daten eingegeben, verändert oder entfernt worden sind:

  • Umfassendes Audit-Log-System: Protokollierung von Login, Stellen-Erstellung/-Änderung/-Löschung, Einstellungsänderungen, Team-Einladungen und -Entfernungen, Rollenänderungen, Bewerbungslöschungen.
  • Webhook-Zustellungsprotokoll mit Zeitstempel, Statuscode, Antwort und Versuchsnummer.
  • Unveränderliches createdAt-Zeitstempelfeld auf allen Datensätzen.
  • Bewerbungen enthalten consentGivenAt-Zeitstempel als Nachweis der DSGVO-Einwilligung.

3. Verfügbarkeit und Belastbarkeit (Art. 32 Abs. 1 lit. b, c DSGVO)

3.1 Verfügbarkeitskontrolle

Maßnahmen zum Schutz gegen zufällige oder mutwillige Zerstörung oder Verlust:

  • Automatische tägliche Datenbankbackups durch Supabase (Point-in-Time Recovery).
  • Serverless-Architektur (Netlify Functions) — automatische Skalierung, kein Single Point of Failure.
  • Fehler-Monitoring über Sentry mit Echtzeit-Alerts.
  • Redundante Datenspeicherung durch Supabase/AWS mit Multi-AZ in eu-central-1.

3.2 Belastbarkeit

  • Umfassendes Rate Limiting auf allen öffentlichen Endpoints (12 verschiedene Limiter, teils persistent in der Datenbank).
  • CDN-basierte Auslieferung über Netlify Edge Network.
  • Automatische Skalierung der Serverless Functions bei Lastspitzen.

4. Verfahren zur regelmäßigen Überprüfung, Bewertung und Evaluierung (Art. 32 Abs. 1 lit. d DSGVO)

  • Input-Validierung: Zod-Schema-Validierung auf allen Formulareingaben, HTML-Escaping (escapeHtml), CSV-Injektionsschutz (escapeCSV).
  • Parametrisierte Datenbankabfragen über Prisma ORM — kein Raw-SQL im Anwendungscode.
  • Dateiupload-Validierung: Serverseitige Prüfung von MIME-Type und Dateigröße (5 MB für Bilder, 10 MB für Dokumente). Nur PDF- und Word-Dateien für Bewerbungen zugelassen.
  • Generische Fehlermeldungen nach außen — keine Stack-Traces oder interne Details in API-Antworten.
  • User-Enumeration-Schutz: Login-Fehler und Passwort-Reset liefern identische Antworten unabhängig davon, ob die E-Mail existiert.
  • Abhängigkeiten: Regelmäßige Überprüfung mittels npm audit.
  • Automatisierte E2E-Tests (Playwright) für kritische Workflows (Authentifizierung, Bewerbungen, Dashboard).

5. Datenschutz durch Technikgestaltung und datenschutzfreundliche Voreinstellungen (Art. 25 DSGVO)

  • Datenminimierung: Nur zwingend erforderliche Felder (Name, E-Mail) sind Pflichtfelder. Alle weiteren Bewerbungsfelder sind pro Stelle konfigurierbar.
  • Automatische Datenbereinigung (Cron-Job): Bewerbungen für geschlossene Stellen nach 180 Tagen, alle Bewerbungen nach 365 Tagen automatisch gelöscht — inklusive Dateien aus dem Speicher.
  • Tracking-Daten (PageViews, ClickEvents) nach 90 Tagen automatisch gelöscht.
  • Rate-Limit-Einträge nach 24 Stunden automatisch bereinigt.
  • Passwörter mit scrypt gehasht (nicht umkehrbar).
  • IP-Adressen werden nur für Rate Limiting ausgelesen und nicht persistent gespeichert.
  • DSGVO-Einwilligungszeitpunkt (consentGivenAt) wird bei jeder Bewerbung serverseitig dokumentiert.
  • Bewerbungsdokumente über zeitlich begrenzte signierte URLs zugänglich (kein dauerhafter öffentlicher Zugriff).
  • Konto- und Bewerbungslöschung im Dashboard verfügbar (Self-Service).
  • Keine Analyse- oder Tracking-Cookies — nur technisch notwendige Cookies.

6. Infrastruktur-Übersicht

KomponenteAnbieterStandortZertifizierungen
Datenbank (PostgreSQL)Supabase (AWS)EU (Frankfurt)SOC 2 Type II
DateispeicherSupabase Storage (AWS S3)EU (Frankfurt)SOC 2 Type II
Web-HostingNetlifyGlobal CDNSOC 2 Type II, EU-DPF
E-Mail-VersandResendUSAEU-DPF
ZahlungsabwicklungStripeUSA/EUPCI DSS Level 1, EU-DPF
Fehler-MonitoringSentryUSASOC 2 Type II, EU-DPF

Aktualisierung

Diese technischen und organisatorischen Maßnahmen werden regelmäßig überprüft und bei Bedarf an den aktuellen Stand der Technik angepasst. Die jeweils aktuelle Fassung ist auf dieser Seite abrufbar und Bestandteil des Auftragsverarbeitungsvertrags (AVV).