Teil 5 des Compliance-Updates: - docs/legal/: data-processing-inventory.md, subprocessors.md, technical-organizational-measures.md, retention-and-deletion.md, incident-response.md, licenses-and-attributions.md — Ist-Zustand aus der Analyse, offene Punkte als Platzhalter - Reine Consent-Regeln nach src/lib/legal-rules.ts ausgelagert (kein Prisma) + Texte nach src/lib/legal-content.ts (7 Pflichtbestätigungen) — für Testbarkeit - Vitest eingerichtet (vitest.config.ts, test-Script); 13 Tests grün: Pflicht-Dokumenttypen, Re-Consent bei neuer Version, normale Benutzer ≠ Org-Vertreter, 7 Org-Bestätigungen, Platzhalter-Erkennung, keine erfundenen Subprozessoren Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.3 KiB
3.3 KiB
Technische und organisatorische Massnahmen (TOM) — Lageplan
Stand: 2026-07-23 · sorgfältiger Entwurf. Ist-Zustand aus dem Code; offene Punkte klar markiert. Legende: ✅ vorhanden · ⚠️ teilweise / zu bestätigen · ❌ offen / nicht umgesetzt.
Zugriff & Berechtigungen
- ✅ Mandantentrennung je Organisation (Tenant),
getProjectWithTenantCheck. - ✅ Rollenkonzept: SERVER_ADMIN, TENANT_ADMIN, OPERATOR, VIEWER.
- ⚠️ MFA für System-/Org-Admins: ❌ nicht vorhanden → Empfehlung offen.
- ✅ Admin-APIs serverseitig mit
isAdmin/isServerAdmingeschützt.
Authentifizierung & Sessions
- ✅ Passwort-Hashing: bcrypt (cost 12), nie Klartext.
- ✅ JWT-Session (jose, HS256), Cookie
auth-tokenhttpOnly, secure (prod), sameSite=lax, 24 h/14 Tage. - ✅ Passwort-Reset mit kryptographischem Token (32 Bytes), Ablauf.
- ✅ E-Mail-Verifizierung.
Transport & Web-Härtung
- ✅ HTTPS/TLS; HSTS (max-age 2 Jahre, preload).
- ✅ Sicherheits-Header: CSP (mit
frame-ancestors 'self'), X-Content-Type-Options nosniff, Referrer-Policy, Permissions-Policy, COOP, X-XSS-Protection. - ⚠️ CSP enthält
unsafe-inline/unsafe-eval(für MapLibre gelockert) → langfristig verschärfen. - ✅ Private Routen (/app,/admin,/settings,/konto):
X-Robots-Tag: noindex+Cache-Control: no-store(Middleware). - ⚠️ Socket.io-Server (
server-custom.js): CORSorigin:'*'→ einschränken empfohlen.
Eingaben & Uploads
- ✅ Rate-Limiting: Login, Registrierung, Passwort-Reset, Verifizierung, Kontakt, Konto-Löschung, Share-PIN.
- ⚠️ Rate-Limiter ist In-Memory (pro Instanz) → bei Mehr-Instanz-Betrieb geteilten Store nutzen.
- ⚠️ Upload-Validierung (MIME/Grösse): vorhanden für Icons/Logos/Planbilder → Umfang bestätigen.
- ✅ Zugriffsschutz auf Dateien (serve-Routen mit Tenant-Check).
Speicherung & Verschlüsselung
- ✅ Übertragung verschlüsselt (TLS).
- ⚠️ Verschlüsselung ruhender Daten (DB/MinIO/Backups):
[ZU BESTÄTIGEN]. - ⚠️ Secrets-Verwaltung: ENV (
NEXTAUTH_SECRET, MinIO) + DB (SystemSetting: SMTP/Stripe) → Absicherung der DB-Secrets bestätigen.
Backup & Wiederherstellung
- ⚠️ Backups:
[VORHANDEN? FREQUENZ? AUFBEWAHRUNG?](siehedocs/backup-und-seeding.md). - ❌ Restore-Tests:
[DOKUMENTIEREN].
Logging & Monitoring
- ✅ Server-Logs (console). ⚠️ Vermeidung sensibler Daten in Logs → Review empfohlen.
- ❌ Zentrales Monitoring/Alerting:
[OFFEN].
Betrieb & Prozesse
- ✅ Idempotente Migrationen (
prisma/migrate.js) beim Container-Start. - ⚠️ Dependency-/Patch-Management:
[PROZESS DOKUMENTIEREN]. - ⚠️ Trennung Entwicklung/Test/Produktion:
[BESTÄTIGEN]; Umgang mit Testdaten[BESTÄTIGEN]. - ✅ Löschkonzept/Datenexport: siehe
retention-and-deletion.md; Betroffenenrechte via/konto/datenschutz. - ✅ Berechtigungsentzug: Benutzer sperren (
isActive), aus Organisation entfernen.
Direkt umgesetzte risikoarme Verbesserungen (dieses Update)
- Private Routen auf
noindex/no-storegesetzt. - Rechtliche Prüf-Hinweise in Exporten und Berechnungen.
- Revisionssichere Zustimmungsprotokollierung ohne roh-IP.
Empfohlene, noch offene Massnahmen
- MFA für Admins; CSP verschärfen; Socket.io-CORS einschränken; geteilter Rate-Limit-Store; Verschlüsselung ruhender Daten + Backups bestätigen; Restore-Tests; Monitoring.