Technische und Organisatorische Maßnahmen (TOM)
NexDeck Platform — Anhang zur Auftragsverarbeitung nach Art. 28 DSGVO
Cover
| Feld | Wert |
|---|---|
| Dokument | Technische und Organisatorische Maßnahmen (TOM) nach Art. 32 DSGVO |
| Produkt | NexDeck Platform (Multi-Tenant SaaS) |
| Anbieter / Verantwortliche Stelle | Kre8ive Evolution GmbH i.G. (wird nach HRB-Eintragung aktualisiert) |
| Version | 2026-Q2 v1.0 |
| Stand | 2026-05-29 |
| Geltungsbereich | Alle personenbezogenen Daten, die NexDeck Platform im Auftrag der Kunden (= Tenants) verarbeitet (Auftragsverarbeitung gem. Art. 28 DSGVO) |
| Klassifikation | Vertraulich. Weitergabe nur an Auftraggeber im Rahmen des AVV sowie an Aufsichtsbehörden auf Anfrage. |
| Nächste planmäßige Revision | 2026-Q3 (spätestens drei Monate nach Stand-Datum) |
| Verantwortlich für Pflege | Geschäftsleitung Kre8ive Evolution GmbH i.G. |
| Rechtsgrundlage | Art. 32 Abs. 1 lit. a–d, Abs. 2, Abs. 4 DSGVO; Art. 28 Abs. 3 lit. c DSGVO |
Hinweis zur Rechtsform: Die Kre8ive Evolution GmbH befindet sich aktuell in Gründung (i.G.). Nach erfolgter Eintragung im Handelsregister (HRB) werden Rechtsform, HRB-Nummer, Sitz und gesetzliche Vertreter in diesem Dokument, im AVV, in der Datenschutzerklärung sowie im Impressum aktualisiert.
Inhaltsverzeichnis
- Pseudonymisierung und Verschlüsselung (Art. 32 Abs. 1 lit. a)
- Vertraulichkeit (Art. 32 Abs. 1 lit. b)
- Integrität (Art. 32 Abs. 1 lit. b)
- Verfügbarkeit und Belastbarkeit (Art. 32 Abs. 1 lit. b)
- Wiederherstellbarkeit (Art. 32 Abs. 1 lit. c)
- Verfahren zur regelmäßigen Wirksamkeitsprüfung (Art. 32 Abs. 1 lit. d)
- Sicherstellung im Vertragsverhältnis (Art. 32 Abs. 4)
- Offene Punkte und Carryovers (Transparenz)
- Aufbewahrung und Versionierung
- Versions-Log
- Anhang: Referenzen und Normenbezug
1. Pseudonymisierung und Verschlüsselung (Art. 32 Abs. 1 lit. a DSGVO)
1.1 Verschlüsselung at-Rest
| Layer | Maßnahme | Algorithmus | Verantwortlich |
|---|---|---|---|
| Datenbank (Postgres) | Supabase-Cloud-at-Rest-Encryption | AES-256 | Supabase (Sub-Processor) |
| Object Storage | AWS S3 Server-Side Encryption (SSE-S3) | AES-256 | AWS (Sub-Processor) |
| Edge Cache | Vercel Edge — ausschließlich ephemer | — | Vercel (Sub-Processor) |
| Backups | Supabase Point-in-Time-Recovery, verschlüsselt | AES-256 | Supabase (Sub-Processor) |
| Audit-Log | Append-only-Tabelle in Postgres, at-Rest mitverschlüsselt | AES-256 | NexDeck / Supabase |
1.2 Verschlüsselung in-Transit
- Transport-Layer: TLS 1.3 (Mindest-Version) zwischen Client, Vercel-Edge, Supabase und AWS S3. TLS 1.2 deaktiviert.
- HSTS:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preloadauf allen produktiven Domains (nexdeck.app,www.nexdeck.app). Ein HTTP-Fallback existiert nicht (Redirect 308 von HTTP → HTTPS auf Edge). - Inter-Service: Supabase-Postgres-Verbindungen ausschließlich über TLS, Service-Role-Keys nur Server-zu-Server.
- Webhooks: Alle eingehenden Webhooks (Stripe, Unipile, OneSignal, AWS SNS) ausschließlich über HTTPS mit Signatur-Verifikation.
1.3 Application-Layer-Encryption
Sensible Felder oberhalb der Postgres-at-Rest-Schicht werden zusätzlich auf Applikationsebene verschlüsselt:
| Feld / Daten | Schicht | Verfahren | Code-Pfad |
|---|---|---|---|
| Unipile-OAuth-Tokens | Application | AES-256-GCM mit 128-Bit Auth-Tag | src/core/lib/security/encryption.ts |
| SMTP-Credentials (Inbox) | Application | AES-256-GCM mit 128-Bit Auth-Tag | src/core/lib/security/encryption.ts |
| OAuth-Refresh-Tokens (Google/Microsoft) | Application | AES-256-GCM mit 128-Bit Auth-Tag | src/core/lib/security/encryption.ts |
| Magic-Link-Tokens (Booking, Proposal) | Application | Hash (SHA-256), Token-Plain nur als E-Mail-Link | src/modules/booking/lib/magic-link.ts |
Key-Hierarchie: ENCRYPTION_KEY als 32-Byte-Masterschlüssel in Vercel-Environment-Variables, getrennt nach Production / Staging / Development. Der Key wird at-Rest verschlüsselt durch Vercel verwaltet und niemals geloggt. Hard-Fail beim Start, falls ENCRYPTION_KEY fehlt oder nicht 32 Bytes lang ist (siehe Wave Business-Email C1).
1.4 Pseudonymisierung
- Identifier: Alle User- und Tenant-IDs als UUIDv4 (kryptografisch sicher generiert, kollisionsresistent). Keine sequentiellen Integer-IDs in öffentlich exponierten API-Responses.
- Externe Magic-Links: 32 Bytes kryptografisch zufälliger Hex-String, Single-Use, TTL 15 Minuten (Booking) bzw. 7 Tage (Proposal), nach Einlösung invalidiert.
- Cross-System-Identifier: Externe IDs (Stripe Customer-IDs, Unipile Account-IDs, OneSignal Player-IDs) werden separat in Mapping-Tabellen geführt, nie als Primärschlüssel verwendet.
- Logs: PII in Application-Logs (Sentry) wird gehasht oder maskiert (z. B. E-Mail-Domains generischer Provider werden in
contact_email-Notifications nicht durchgereicht, siehe Wave 42l Iter-4 Finding F4).
1.5 Hash-Algorithmen
| Zweck | Algorithmus | Verantwortlich |
|---|---|---|
| Passwort-Hashing | Argon2id (Supabase-Auth-Default) | Supabase |
| Audit-Log-Integritäts-Hash | SHA-256 | NexDeck |
| Magic-Link-Token-Lookup | SHA-256 (Hash gespeichert, Token-Plain nur in E-Mail) | NexDeck |
| Webhook-Signatur (Stripe, Unipile) | HMAC-SHA-256 | Sub-Processors |
1.6 Key-Management
- Sämtliche Schlüssel und Geheimnisse werden in Vercel Environment Variables verwaltet, dort at-Rest verschlüsselt.
- Trennung nach Stage: Production, Preview, Development je eigener Schlüssel.
- Keine Schlüssel im Code-Repository (durchgesetzt per Pre-Commit-Hook TruffleHog und Daueraktivierung GitGuardian auf GitHub).
- Empfohlene Rotation:
ENCRYPTION_KEYalle 12 Monate, Supabase-service_role-Keys ad-hoc bei Verdacht. Letzte Rotation: 2026-05-28 (Security-Sprint, vollständige Rotation Supabase PAT + AWS_ADMIN +sb_secret_*+sb_publishable_*). - Service-Role-Keys ausschließlich serverseitig (Server Actions, Route Handlers); Frontend nutzt anon-Key (publishable). Validiert per Custom-Hook
validate-no-service-role-frontend.
2. Vertraulichkeit (Art. 32 Abs. 1 lit. b DSGVO)
2.1 Row-Level Security (RLS)
- Coverage: 100 % aller multi-tenant-relevanten Tabellen (~200 Tabellen) haben aktive RLS-Policies.
- Policy-Pattern: Tenant-Isolation primär über
tenant_id = (auth.jwt() ->> 'tenant_id')::uuidbzw.current_setting('app.tenant_id'). - Verifikation: Daily-CI-Check via
pg_policies-Query stellt sicher, dass keine Tabelle ohne RLS deployed wird. Schema-Drift-Check (scripts/check-schema-drift-pre-gl.ts) als Pre-Go-Live-Gate. - Defense-in-Depth: Zusätzlich zur RLS wird in jedem
UPDATE/DELETEin Server Actions explizit.eq('tenant_id', currentTenant)gesetzt, validiert per Custom-Hookvalidate-tenant-isolation(siehe Wave 42l Iter-4 Finding F8). - PostgREST-Grants: Neue Tabellen erhalten explizite
GRANT-Statements fürauthenticated-Rolle (Pflicht ab Supabase Data API 30.10.2026, durchgesetzt per Migrations-Template-Hook).
2.2 Role-Based Access Control (RBAC)
NexDeck implementiert ein zweistufiges RBAC-Modell, konform mit Art. 28 DSGVO:
- Plattform-Ebene:
is_super_adminBoolean (Kre8ive-Evolution-Mitarbeitende für Support und Wartung). - Tenant-Ebene: 8 Kern-Rollen —
owner,admin,manager,dispatcher,backoffice,worker,finance,auditor_viewer— zuzüglich Legacy-Rollen (sales_partner,member) für Bestandskonten. - Permissions: 33 atomare Permissions, gruppiert in 10 Permission-Groups.
- Branchen-Anpassung: Über
tenants.industry_preset_slug(handwerk, agentur, dienstleister) und JSONB-permission_overrides— keine branchen-spezifischen Rollen, um RBAC-Modell flach und prüfbar zu halten. - Sub-Rollen-Visibility: Sidebar- und Feature-Gating per
requirePermission(...)in Server Actions; UI-Guards in/admin/*Pages (siehe Wave 42l Iter-5).
2.3 Multi-Factor-Authentication (MFA)
- Verfahren: TOTP (RFC 6238) via Supabase Auth MFA.
- Aktivierung pro Tenant:
tenants.require_mfa_for_adminsBoolean — Admins und Owner müssen MFA aktivieren, sonst kein Login auf/admin/*Routen. - Pre-Go-Live: Globale MFA-Enforcement-Option vorbereitet (Feature-Flag
global_mfa_enforced, im Real-Tenant-Onboarding aktivierbar). - Recovery: Backup-Codes (10 Stück, einmalig generiert, gehashed gespeichert).
2.4 Audit-Log
| Eigenschaft | Wert |
|---|---|
| Tabelle | audit_log |
| Schreibmodus | Append-only (DELETE/UPDATE per Trigger blockiert) |
| Retention | 10 Jahre (GoBD-konforme Aufbewahrung) |
| Inhalt | Finanz-CRUD, Login-Versuche, RLS-Verletzungen, KI-Aktionen, Admin-Aktionen, Rollen-Änderungen, Unipile-Connection-Updates, Invoice-Finalisierung |
| Forensik | IP-Adresse und User-Agent via next/headers (seit Wave 42l Iter-4, Compliance-Finding) |
| Integrität | SHA-256-Hash über jeden Eintrag, Vorgänger-Hash für Chain-of-Custody |
2.5 Geheimnis-Management in CI/CD
- TruffleHog v3 als Pre-Commit-Hook auf allen Branches.
- GitGuardian als Dauer-Monitor auf dem GitHub-Repository, Alarmierung bei verdächtigen Commits.
- detect-secrets als zusätzlicher Pre-Commit-Hook für strukturierte Geheimnisse (JWT-Pattern, AWS-Access-Keys, Stripe-Keys).
- Hardcoded-Token-Audit: Im Security-Sprint 2026-05-28 wurden 17 historische Test-Token-Files vollständig aus Repo und Git-History entfernt.
2.6 HTTP-Sicherheits-Header
| Header | Wert | Status |
|---|---|---|
Strict-Transport-Security |
max-age=63072000; includeSubDomains; preload |
LIVE |
X-Content-Type-Options |
nosniff |
LIVE |
X-Frame-Options |
DENY (Public-Booking-Routen: SAMEORIGIN) |
LIVE |
Referrer-Policy |
strict-origin-when-cross-origin |
LIVE |
Permissions-Policy |
Restriktiv (geo, mic, cam, payment deaktiviert) | LIVE |
X-Permitted-Cross-Domain-Policies |
none |
LIVE (seit 2026-05-29) |
X-Powered-By |
Entfernt | LIVE (seit 2026-05-29) |
Content-Security-Policy |
Strict mit Nonce-Migration laufend | TEILWEISE (s. Sektion 8) |
| Cookies | HttpOnly; Secure; SameSite=Lax |
LIVE (seit 2026-05-29) |
3. Integrität (Art. 32 Abs. 1 lit. b DSGVO)
3.1 Datenbank-Integrität
- Constraints:
CHECK,UNIQUE,NOT NULL,FOREIGN KEYmit expliziterON DELETE-Strategie (RESTRICT für Finanz-/Audit-Bezug, CASCADE nur bei eigentumsgebundenen Kindern). - Optimistic Locking: DB-Trigger-Pattern für konfliktrelevante Schreibvorgänge (z. B.
appointments,crew_assignmentsaus Calendar-Master Phase 2 F1,invoicesaus Vendor-Sprint Wave 43c). - Schema-Drift-Snapshot:
scripts/check-schema-drift-pre-gl.tsals CI-Gate, Pre-Go-Live 0 Findings garantiert (zuletzt verifiziert 2026-05-26 nach Wave 43-DATEV-Closure und Vendor-Sprint).
3.2 Append-only-Audit-Log
DELETEundUPDATEaufaudit_logper Trigger blockiert, Verstöße werden ihrerseits geloggt.- Hashchain (SHA-256) verkettet Einträge zeitlich.
- Replikation: Supabase-PITR sichert auch das Audit-Log.
3.3 GoBD-Unveränderbarkeit
- Rechnungs-PDFs: Speicherung in AWS S3 mit Object Lock (WORM-Mode, Compliance), Aufbewahrungsdauer 10 Jahre, parallel
versioning enabled. - Storno-Pattern: Keine echten Löschungen von Belegen, stattdessen Storno-Beleg mit Verweis (
gobd_storno_of). - Hash-Sicherung: PDF-SHA-256-Hash zusätzlich in
invoices.pdf_hashfür Tamper-Detection. - Siehe
compliance/wave-43-audit-log.mdfür vollständigen DATEV-Export-Hardening-Audit.
3.4 Code- und Build-Integrität
- Lock-Files:
package-lock.jsoncommittet, Build schlägt bei Drift fehl. - Pre-Commit-Hook
protect-critical-files: Schützt sicherheitskritische Pfade (src/core/lib/security/**,src/middleware.ts, Migrations) vor unbeabsichtigten Änderungen ohne Owner-Bestätigung. - Husky-Hooks: Lint, TypeScript-Check, Test-Subset vor jedem Commit.
- CI-Build: Vercel führt reproduzierbare Builds aus mit pinned Node-Version (20.x LTS).
3.5 Lizenz-Compliance
Eingeführt im License-Compliance-Sprint 2026-05-22:
license-checker-rseidelsohnfür Manifest-Scan aller 1.688 Produktions-Pakete.- CycloneDX SBOM (
@cyclonedx/cyclonedx-npm) als maschinenlesbare Bill-of-Materials. - OSV-Scanner Binary v2.3.8 für Vulnerability-Cross-Reference.
- Hard-Block in CI bei verbotenen Lizenzen (AGPL, SSPL, BUSL, CC-BY-NC).
- Nightly Cron zur Daueraktualisierung.
- Pre-Commit-Hook prüft nur bei Manifest-Änderungen, reduziert Latenz.
3.6 KI-Tool-Aufrufe
- Alle KI-Tool-Aufrufe (NEX, Auto-Match, Vision) werden in
audit_logmit Kategorieai_*protokolliert (Werkzeug, Eingabe-Hash, Zeitstempel, betroffener Tenant, User). - Vertex-AI-Region erzwungen auf
europe-west1(Belgien) für Sonnet 4.6 (Schrems-II-konform, sieheproject_vertex_ai_regions.md).
4. Verfügbarkeit und Belastbarkeit (Art. 32 Abs. 1 lit. b DSGVO)
4.1 Hosting-Topologie
| Komponente | Anbieter | Region | Bemerkung |
|---|---|---|---|
| Application Runtime | Vercel | Frankfurt (fra1, preferred) |
EU-only Processing für Server-Aktionen |
| Datenbank | Supabase | eu-central-1 (Frankfurt) |
Postgres 16 |
| Object Storage | AWS S3 | eu-central-1 (Frankfurt) |
Object Lock + Versioning aktiv |
| CDN / Edge | Vercel Edge Network | Global | Kein User-Tracking; statische Assets |
| E-Mail-Versand | AWS SES | eu-central-1 (Frankfurt) |
Transaktional, mit DMARC/DKIM/SPF |
| Push Notifications | OneSignal | EU-Endpoints | Web-Push v16 |
| AI Inference | Google Vertex AI | europe-west1 (Belgien) |
Schrems-II-konform für Anthropic Sonnet 4.6 |
4.2 Backup und Point-in-Time-Recovery
- Datenbank: Supabase PITR aktiviert, Rollback-Window 7 Tage, Daily Full-Backups, transparente WAL-Archivierung.
- Objekt-Storage: S3 Versioning aktiv, 30-Tage-Recover-Window für versehentlich gelöschte Objekte, Object Lock für GoBD-Belege darüber hinaus.
- Konfiguration: Vercel-Environment-Variables versioniert über Vercel-eigene Audit-Logs.
4.3 DDoS- und Missbrauchs-Schutz
- Vercel WAF mit automatischer Layer-7-DDoS-Mitigation.
- Edge-Rate-Limiting via Upstash Redis mit drei Stufen: Per-User, Per-IP, Per-AI-Route.
- ALTCHA (self-hosted) als Bot-Protection auf öffentlichen Booking-Routen — vollständig EU-gehostet, keine US-Routing (Ablösung von Cloudflare Turnstile in Wave 42l, siehe
booking_open_followups.md). - Disposable-E-Mail-Blocklist für Public-Booking (24 generische Domains, siehe Wave Business-Email Finding C2).
4.4 Monitoring und Alarmierung
- Sentry: Error- und Performance-Monitoring, Tenant-isolierte Tags. Wirksamkeit der Tags durch Sentry-Rule-ID
605288(GoBD E-Rechnung Trigger-Failed) belegt. - Uptime-Checks: Healthcheck-Endpoints
/healthzund/api/healthz, externe Probes. - Vercel-Analytics: Aggregierte Performance-Metriken, keine personenbezogenen Tracking-Cookies.
4.5 Incident-Response
- Breach-Response-Playbook:
.claude/plans/active/2026-04-17_breach-response-playbook.mddefiniert Eskalationsstufen, 72-h-Meldekette nach Art. 33 DSGVO, Kommunikationsvorlagen, forensische Schritte. - Sub-Processor-Resilienz: Multi-Provider-Strategie für kritische Wege (AWS SES als Fallback, falls Unipile-Connection des Tenants nicht verfügbar).
- Status-Page (intern): Vorbereitung läuft, Aktivierung mit Real-Tenant-Onboarding.
5. Wiederherstellbarkeit (Art. 32 Abs. 1 lit. c DSGVO)
5.1 Datenbank-Recovery
- Supabase Point-in-Time-Recovery: Rollback auf jeden Zeitpunkt innerhalb der letzten 7 Tage.
- Recovery-Time-Objective (RTO): ≤ 1 Stunde für Voll-Recovery (Test 2026-04 erfolgreich durchgeführt).
- Recovery-Point-Objective (RPO): ≤ 1 Minute (WAL-Archivierung kontinuierlich).
- Cross-Region-Replikation: Aktuell nicht aktiviert; bewusste Entscheidung wegen EU-only-Datenresidenz. Erwogen für Sprint+5+.
5.2 Storage-Recovery
- S3 Versioning: 30-Tage-Recover für versehentlich gelöschte Objekte.
- Object Lock (GoBD-Belege): WORM-Schutz über 10 Jahre.
5.3 Code-Recovery
- Git: Spiegelung auf GitHub (
origin) als externe Quelle. - Vercel: Deploy-History 30 Tage rückrollbar via Vercel Dashboard (Instant Rollback).
- Migrations: SQL-Migrations versioniert in
nexdeck-platform/supabase/migrations/; Down-Migrations für kritische Schema-Änderungen bewusst nicht standardmäßig vorgesehen — stattdessen Forward-Fix-Pattern.
5.4 Konfigurations-Recovery
- Vercel Environment Variables: Versioniert, audit-loggt, Export für Disaster-Recovery monatlich gesichert (verschlüsselt, in Owner-Custody).
5.5 Audit-Trail bleibt erhalten
- 10-Jahre-Retention des Audit-Logs darf durch Recovery-Operationen nicht verkürzt werden. PITR-Rollback würde Audit-Einträge im Rollback-Zeitfenster zurücksetzen; in einem solchen Fall greift das Breach-Response-Playbook mit gesonderter Protokollierung (Manueller Forensik-Eintrag).
6. Verfahren zur regelmäßigen Wirksamkeitsprüfung (Art. 32 Abs. 1 lit. d DSGVO)
6.1 Penetration-Tests (vierteljährlich)
Aktueller Sprint 2026-05-28/29, Plan .claude/plans/active/2026-05-28_pentest-tooling-stack.md:
Phase A.5 — Static Analysis (abgeschlossen 2026-05-28):
| Tool | Ergebnis |
|---|---|
| Semgrep | 0 CRITICAL nach Sprint, 0 HIGH offen |
| TruffleHog | 17 hardcoded-Token-Files entfernt (Repo + Git-History) |
| Trivy | 5 CRITICAL CVEs eliminiert, HIGH 21 → 1 |
npm audit |
Daily-Lauf in CI |
Zusätzlich: 3 Dockerfile-Hardenings (USER-Anweisung), GCM statt CBC für interne Crypto-Pfade, Supabase PAT + AWS_ADMIN + sb_secret_* + sb_publishable_* rotiert.
Phase A1 — Dynamic Analysis (abgeschlossen 2026-05-29):
| Tool | Ergebnis |
|---|---|
| OWASP ZAP AJAX-Spider | 7.744 URLs gegen www.nexdeck.app |
| Unique Findings | 9 |
| Quick-Wins LIVE | 4 (X-Powered-By disabled, Cookies HttpOnly/Secure, X-Permitted-Cross-Domain-Policies, weitere) |
| Nuclei | Standard-Templates, NexDeck-Custom-Templates Sprint+3 |
6.2 Static-Analysis-Pipeline
- TypeScript-strict auf gesamtem Repo (
tsc --noEmit). - ESLint mit Custom-Rules:
nexdeck-calendar/no-mixed-state-axes,no-tenant-id-missing,react-hooks/exhaustive-deps. - Semgrep: Default-Ruleset, NexDeck-Custom-Rules in Sprint+2 geplant (Tenant-ID-Required, No-Service-Role-Frontend).
6.3 Vulnerability-Scanning
- Trivy: Tägliche Image- und Filesystem-Scans.
- OSV-Scanner: Tägliche Cron-Läufe (siehe Lizenz-Compliance-Sprint).
- npm-audit: Pre-Commit + CI.
- CycloneDX SBOM: Maschinenlesbar erzeugt, archiviert je Release.
6.4 Monitoring-basierte Wirksamkeitsprüfung
- Sentry-Pattern-Analyse: Neue Fehler-Pattern werden in Alert-Rules überführt (Beispiel:
category=gobd-einvoice-trigger-failed, Rule-ID605288). - Error-Rate-Tracking: Pro Tenant, mit Schwellwert-Alarmierung.
6.5 Manuelles 3-fach-Audit pro Wave
Verbindliche User-Direktive 2026-05-26 (Cozy-Pelican-Plan): Nach jedem Block bzw. nach jeder Wave wird ein 3-fach-Audit durchgeführt mit den Spuren:
- RLS + RBAC (Tenant-Isolation, Defense-in-Depth)
- Compliance, Legal, Audit-Logs (DSGVO, GoBD, AGB-Bezug)
- Bugs, Tests, Gaps (Funktionsdeckung, Regression, Manual-Tests)
Vor jedem Wave-Abschluss wird die Audit-Routine feedback_audit_routine_post_todo.md verbindlich angewendet.
6.6 Lizenz-Compliance-Daueraktivierung
- license-check Daily-Cron schlägt bei neuen verbotenen Lizenzen Alarm.
- AGB §12q dokumentiert Open-Source-Komponenten,
/legal/third-party-noticesöffentlich abrufbar.
6.7 Nachweise
- Pentest-Plan:
.claude/plans/active/2026-05-28_pentest-tooling-stack.md - License-Compliance-Sprint:
license_compliance_sprint_2026_05_22.md - Wave-43-DATEV-Audit:
compliance/wave-43-audit-log.md - Schema-Drift-Snapshot:
scripts/check-schema-drift-pre-gl.ts(Daily-CI)
7. Sicherstellung im Vertragsverhältnis (Art. 32 Abs. 4 DSGVO)
7.1 Sub-Processor-Liste
- Vollständige, jederzeit aktuelle Liste unter
https://nexdeck.app/legal/subprocessors(Stand 2026-05-29: 24+ Sub-Processors). - Vierteljährliche Re-Validierung im Rahmen der TOM-Revision.
- Anzeige- und Widerspruchsrecht des Auftraggebers nach AVV §-Klausel zur Auftragnehmerkette.
7.2 AVV / DPA mit allen Sub-Processors
| Sub-Processor | Zweck | EU-Standort | AVV / DPA |
|---|---|---|---|
| Supabase | Datenbank, Auth, Storage | EU (eu-central-1) |
Vorliegend, SCC-Anhang |
| AWS | S3, SES | EU (eu-central-1) |
DPA + SCC (Schrems II konform) |
| Vercel | Hosting, Edge | EU (fra1 preferred) |
DPA + SCC |
| Stripe | Payments | EU + US (SCCs) | DPA + SCC + TIA |
| Unipile | E-Mail/Messenger-Integration | EU | Vorliegend |
| Google (Vertex AI) | KI-Inferenz | EU (europe-west1) |
DPA + SCC, Region-Pin |
| Sentry | Error-Monitoring | EU + US (SCCs) | DPA + SCC + TIA |
| OneSignal | Push-Notifications | EU + US (SCCs) | DPA + SCC + TIA |
| Upstash | Rate-Limiting (Redis) | EU | Vorliegend |
| ALTCHA | Bot-Protection (self-hosted) | EU (eigene Vercel-Instanz) | Kein Drittlandtransfer |
| Weitere | siehe /legal/subprocessors |
gemischt | siehe Sub-Liste |
7.3 EU-only-Processing wo möglich
- Hauptverarbeitung ausschließlich in EU-Regionen (Supabase
eu-central-1, Vercelfra1, AWSeu-central-1, Vertex AIeurope-west1). - US-Drittlandtransfers nur dort, wo ein gleichwertig sicheres EU-Pendant fehlt (Sentry, OneSignal, Stripe-Fallback). In diesen Fällen: SCCs in der Fassung 2021/914/EU plus dokumentierte Transfer Impact Assessment (TIA).
7.4 Mitarbeiterverpflichtung und Schulung
- Alle Mitarbeitenden mit Datenzugang unterzeichnen eine Vertraulichkeitsvereinbarung gemäß Art. 28 Abs. 3 lit. b und Art. 29 DSGVO.
- Regelmäßige DSGVO-Sensibilisierungs-Schulungen, Dokumentation intern bei Kre8ive Evolution GmbH i.G.
- Zugriffe auf Produktivdaten ausschließlich nach Need-to-Know-Prinzip, geloggt im Audit-Trail (Tenant-Impersonation-Events).
7.5 Meldepflichten und Eskalation
- 72-h-Meldekette nach Art. 33 DSGVO an Auftraggeber, dokumentiert im Breach-Response-Playbook.
- Bei Betroffenenrisiko: Benachrichtigung der Betroffenen nach Art. 34 DSGVO durch den Verantwortlichen, vorbereitete Templates beim Auftragsverarbeiter vorhanden.
7.6 Weisungsgebundenheit
- NexDeck verarbeitet Auftraggeber-Daten ausschließlich auf dokumentierte Weisung des Verantwortlichen (Vertragstext, Default-Konfiguration der Plattform, dokumentierte Support-Tickets).
- Eigenverarbeitung für aggregierte Statistik und Sicherheitszwecke nur in pseudonymisierter Form.
8. Offene Punkte und Carryovers (Transparenz)
Diese Sektion macht offene Punkte transparent. Sie ersetzt keine Wirksamkeitsbestätigung, sondern dient der Nachvollziehbarkeit. Bewertung der Risiken und geplanter Schließungstermine:
8.1 CRITICAL — Pre-Go-Live-Blocker
- FullCalendar Premium Commercial License: Aktueller Code in zwei Komponenten (
TeamScheduler.tsx,ResourceTimelineBoard.tsx) ist ohne kommerzielle Lizenz nicht für SaaS einsetzbar (CC-BY-NC-ND hartcodiert bzw. GPL-Fallback). Käufung durch Owner unmittelbar bevorstehend (User-Statement 2026-05-22). Aktion: Nach KaufNEXT_PUBLIC_FULLCALENDAR_LICENSE_KEYin Vercel Production setzen und Hardcode entfernen. Bis dahin: Kein Real-Tenant-Onboarding-Live-Schalt. - GmbH-HRB-Eintragung: Aktuell Kre8ive Evolution GmbH i.G. Mit Eintragung im Handelsregister werden TOM, AVV, AGB, Datenschutzerklärung, Impressum, Stripe-Tax-ID und PDF-Templates aktualisiert. Aktion: Trigger ist HRB-Bestätigung; Update-Checkliste siehe
pending_gmbh_legal_form_update.md.
8.2 HIGH (Sprint+1 bis Sprint+5)
- CSP
script-src 'unsafe-inline'Finding (ZAP Phase A1): Nonce-Migration deferred wegen Vercel-Edge-Inkompatibilität bei dynamischen Routes. Plan B: Subresource Integrity (SRI) für statische Scripts in Sprint+5. - 21 HIGH-Severity CVEs in dev-only Packages: (
next,requestdeprecated,libxmljs,capacitor) — Migration vs. Accept-Risk-Entscheidung in Sprint+1. xlsx-Prototype-Pollution-CVE: Evaluationexceljs-Migration in Sprint+1, Doku siehecompliance/xlsx-vuln-evaluation-2026-05-28.md.
8.3 LOW (Sprint+5 und später)
- Custom Semgrep-Rules für NexDeck (
tenant-id-required,no-service-role-frontend) — Sprint+2. - Custom Nuclei-Templates für Stripe-Webhook-Forgery, JWT-Tenant-Bypass — Sprint+3.
- CI-Integration TruffleHog + Trivy in GitHub-Actions — Sprint+4.
- Cross-Region-DR für Postgres (aktuell bewusst deaktiviert wegen EU-only) — Re-Evaluation Sprint+5+.
8.4 Klar abgegrenzte Nicht-Zertifizierungen
NexDeck Platform ist Stand 2026-05-29 nicht zertifiziert nach:
- ISO/IEC 27001
- ISO/IEC 27018
- SOC 2 (Type I oder II)
- TISAX
- BSI C5 (Cloud Computing Compliance Criteria Catalogue)
Wirksamkeit wird stattdessen über die in Sektion 6 beschriebenen Verfahren nachgewiesen. Eine Zertifizierungs-Roadmap kann auf Anfrage von Großkunden erstellt werden.
9. Aufbewahrung und Versionierung
9.1 TOM-Aufbewahrung
- Intern: 10 Jahre (gleichlautend mit GoBD-Belegen).
- Versionskontrolle: Diese Datei (
compliance/TOM-2026-Q2.md) ist im Repository versioniert; jede Änderung erzeugt einen Git-Commit, der den Stand revisionssicher festhält.
9.2 Auslieferung an Auftraggeber
- TOM ist als Anhang zum AVV Bestandteil des Vertrags.
- Auslieferung als PDF bei jedem neuen Real-Tenant-Onboarding.
- Bei jeder Versionserhöhung erfolgt Benachrichtigung der bestehenden Auftraggeber per E-Mail; das aktuelle Dokument liegt unter dem Tenant-Dashboard zum Download bereit.
9.3 Öffentliche Privacy-Policy
/privacyRoute enthält eine endkunden-verständliche Mini-TOM-Übersicht; die vollständige TOM bleibt vertraulich und wird ausschließlich im B2B-Kontext geteilt.
9.4 Aufsichtsbehörden
- Auf schriftliche Anfrage einer zuständigen Aufsichtsbehörde wird die jeweils aktuelle Vollversion innerhalb von 5 Werktagen bereitgestellt.
9.5 Revisionsrhythmus
- Planmäßig: quartalsweise (nächste Revision 2026-Q3, spätestens 2026-08-29).
- Ad-hoc: bei jeder wesentlichen Änderung an Verarbeitungs-Architektur, Sub-Processor-Wechsel, bei Sicherheitsvorfall oder bei Änderung der Rechtsform (HRB-Eintragung).
10. Versions-Log
| Version | Stand | Änderung | Verantwortlich |
|---|---|---|---|
| v1.0 | 2026-05-29 | Initiale Erstellung des TOM-Dokuments im Anschluss an den Pentest-Sprint Phase A.5 (Static) und Phase A1 (Dynamic ZAP). Aufnahme der License-Compliance-Maßnahmen aus Sprint 2026-05-22 und der DATEV-Hardening-Maßnahmen aus Wave 43. | Geschäftsleitung Kre8ive Evolution GmbH i.G. |
| v1.1 | 2026-05-29 abend | Same-Day-Update mit vier zusätzlichen Härtungs-Maßnahmen: (a) Custom Semgrep-Rules + Nuclei-Templates LIVE (CI-Hard-Block für service_role im Frontend); (b) TruffleHog + Trivy CI-Workflows + Pre-Commit-Hook; (c) Sprint+6A CVE-Reduktion 22→12 Findings (45%), inkl. nodemailer-SMTP-Injection-Fix + file-type-ASF-DoS-Fix + uuid-Buffer-Bounds-Fix; (d) xlsx HIGH-CVE formell ACCEPT_RISK beschlossen (Audit-Log-Event #7667, RBAC-Gate als Mitigation, Re-Eval Q3). Nuclei-Scan gegen Production: 0 Findings auf 3009 Requests × 782 Templates. | Geschäftsleitung Kre8ive Evolution GmbH i.G. |
| v1.2 | 2026-06-01 | §12 NIS2-Art.-21-Mapping ergänzt (Cross-Reference-Tabelle zu §30 BSIG-Katalog a-j mit Status LIVE/TEILWEISE/PLANNED je Maßnahmen-Kategorie + Substanz-Score-Selbsteinschätzung + Wording-Disclaimer + Quartals-Re-Bewertung via /tom-review-Skill). Hintergrund: NexDeck ist nach §28 BSIG aktuell nicht direkt regulierte Einrichtung, setzt Maßnahmen nach Art. 21 NIS2-Richtlinie jedoch substanziell als Plattform-Sicherheits-Baseline um (§43 GmbHG-Sorgfalt + Lieferketten-Vorbereitung §30 Abs. 2 Nr. 4 BSIG). Formulierungen ausschließlich gemäß Whitelist W1-W12 aus docs/internal/nis2-wording-guide.md. |
Geschäftsleitung Kre8ive Evolution GmbH i.G. |
11. Anhang: Referenzen und Normenbezug
11.1 Rechtsgrundlagen und Standards
- DSGVO Art. 32: https://gdpr-info.eu/art-32-gdpr/
- DSGVO Art. 28 (Auftragsverarbeitung): https://gdpr-info.eu/art-28-gdpr/
- DSGVO Art. 33 / 34 (Meldepflichten): https://gdpr-info.eu/art-33-gdpr/
- BSI IT-Grundschutz: https://www.bsi.bund.de/grundschutz
- EDPB Guidelines 04/2020 (TOMs nach Art. 32): https://edpb.europa.eu/
- ENISA Cybersecurity Framework / NIS2 für SaaS-Anbieter: https://www.enisa.europa.eu/
- EU-Standardvertragsklauseln (SCC) 2021/914: https://eur-lex.europa.eu/eli/dec_impl/2021/914
- Schrems-II-Urteil (EuGH C-311/18): https://curia.europa.eu/
11.2 Interne Bezugsdokumente
| Dokument | Pfad |
|---|---|
| AVV-Vorlage | legal/templates/avv.md (in Pflege) |
| Datenschutzerklärung (öffentlich) | Route /privacy |
| Sub-Processor-Liste | Route /legal/subprocessors |
| Open-Source-Hinweise | Route /legal/third-party-notices |
| Breach-Response-Playbook | .claude/plans/active/2026-04-17_breach-response-playbook.md |
| Pentest-Tooling-Stack-Plan | .claude/plans/active/2026-05-28_pentest-tooling-stack.md |
| License-Compliance-Sprint-Doku | nexdeck-platform/docs/LICENSE-POLICY.md |
| Wave-43-DATEV-Audit-Log | compliance/wave-43-audit-log.md |
| Schema-Drift-Pre-Go-Live-Check | scripts/check-schema-drift-pre-gl.ts |
| Application-Layer-Encryption | src/core/lib/security/encryption.ts |
| Vertex-AI-Regional-Constraints | project_vertex_ai_regions.md |
| GmbH-Update-Checkliste | pending_gmbh_legal_form_update.md |
11.3 Versionsstände produktiver Komponenten (Stand 2026-05-29)
| Komponente | Version |
|---|---|
| Next.js | 16.0.7 |
| React | 19.x |
| Supabase Postgres | 16 |
| Node.js (Runtime) | 20.x LTS |
| TLS | 1.3 |
| Symmetrische Verschlüsselung | AES-256-GCM (128-Bit Auth-Tag) |
| Passwort-Hashing | Argon2id |
| Audit-Hash | SHA-256 |
| OSV-Scanner | v2.3.8 |
| OWASP ZAP | aktuell (Sprint 2026-05-28/29) |
12. NIS2-Art.-21-Maßnahmen-Mapping (Cross-Reference)
NexDeck ist nach §28 BSIG aktuell KEINE direkt regulierte Einrichtung
(siehe compliance/NIS2-SELBSTKLASSIFIZIERUNG-2026.md Stand 2026-06-01).
Die Maßnahmen nach Art. 21 NIS2-Richtlinie werden jedoch substanziell als
Plattform-Sicherheits-Baseline umgesetzt — Beweggründe sind die §43 GmbHG-
Sorgfaltspflicht und die Vorbereitung auf Kunden, die uns über die
Lieferketten-Klausel §30 Abs. 2 Nr. 4 BSIG vertraglich verpflichten
können.
Diese Mapping-Tabelle ist KEINE Konformitäts-Bescheinigung im Sinne des Art. 24 NIS2-RL. Sie dient als interne Übersicht und als Basis für Vendor-Assessments (CAIQ-Lite, SIG-Lite).
| Art. 21 Abs. 2 NIS2 / §30 BSIG | Maßnahmen-Kategorie | NexDeck-TOM-Sektion | Code-/Doku-Pfad | Status |
|---|---|---|---|---|
| (a) | Risikoanalyse + IT-Security-Konzepte | §1, §11 | compliance/TOM-2026-Q2.md, compliance/NIS2-SELBSTKLASSIFIZIERUNG-2026.md, docs/ISMS-POLICY.md (Block 5) | TEILWEISE |
| (b) | Bewältigung von Sicherheitsvorfällen | §4.5 | .claude/plans/active/2026-04-17_breach-response-playbook.md (Status PLANNED → ACTIVE in Block 3) | TEILWEISE |
| (c) | Aufrechterhaltung des Betriebs (BCM/DR) | §4-§5 | docs/BACKUP_DR_RUNBOOK.md, compliance/BCM-2026-Q3.md (Block 5) | TEILWEISE |
| (d) | Lieferketten-Sicherheit | §7.1 | src/modules/compliance/lib/subprocessor-list.ts, AVV-Annex 25 Anbieter | LIVE |
| (e) | Sicherheit in Beschaffung/Entwicklung/Wartung | §3, §6 | .github/workflows/security-*.yml, .semgrep/rules/, .nuclei/templates/ | LIVE |
| (f) | Wirksamkeitsbewertung der Maßnahmen | §6 | Pentest-Closure-Memory (2026-05-29, Nuclei 0/3009), Skill /tom-review (Quartal) | LIVE |
| (g) | Cyber-Hygiene / Basis-Schulungen | §7.4 | BSI Allianz-Webinar GF (Q3 2026), docs/security-awareness/ (Block 5) | PLANNED |
| (h) | Kryptographie | §1.3-§1.6 | src/core/lib/security/encryption.ts (AES-256-GCM), TLS 1.3 + HSTS, compliance/cryptography-policy-2026.md (Block 5) | LIVE |
| (i) | Personalsicherheit + Zugangskontrolle + Asset-Mgmt | §2 | src/core/lib/rbac/server-guard.ts (8 Rollen + 33 Permissions), compliance.asset_inventory (Block 5) | TEILWEISE |
| (j) | MFA + gesicherte Kommunikation | §2.3 | tenants.require_mfa_for_admins, MFA-AAL2-RLS, global MFA bei erstem Real-Tenant (siehe MEMORY-Direktive) | TEILWEISE |
12.1 Substanz-Score
NexDeck setzt nach interner Selbsteinschätzung ~70-75% der Art.-21- Maßnahmen-Kategorien substantiell um. Die verbleibenden Lücken (g) Awareness-Training und (c) BCM-Formalisierung werden in Block 5 (Sprint 2026-06) geschlossen.
Bezugsrahmen-Disclaimer (Pflicht): Substanz-Score 70-75% bezieht sich auf NIS2 Art. 21 Maßnahmen-Kategorien nach §30 BSIG (10 Kategorien a-j). NICHT vergleichbar mit ISO 27001 Annex A (93 Controls, siehe ISMS-POLICY.md §12.2) oder CAIQ-Lite Fragebogen (46 Items, siehe CAIQ-LITE-2026.md). Stand: 2026-06-15.
12.2 Wording-Disclaimer (Pflicht)
Bei externer Nutzung dieses Mappings (Vendor-Assessments, Kunden-Anfragen,
Trust-Center): Pflicht-Disclaimer aus docs/internal/nis2-wording-guide.md
§4 (Standard- oder Kurz-Disclaimer) MUSS beigefügt werden.
12.3 Quartalsweise Re-Bewertung
Diese Mapping-Tabelle wird zusammen mit dem TOM quartalsweise über das
/tom-review-Skill auf Änderungen geprüft. Status-Spalten-Änderungen
LIVE/TEILWEISE/PLANNED bumpen LEGAL_VERSIONS.tom automatisch.
Ende des Dokuments.
Dokument-Klassifikation: Vertraulich. Weitergabe ausschließlich im Rahmen des AVV oder auf Anforderung einer zuständigen Aufsichtsbehörde.