Multi-Tenancy
Grundprinzip
Section titled “Grundprinzip”Die Software ist als Multi-Tenant-SaaS konzipiert: Jeder Mandant (Träger oder Kommune) erhält eine eigene Subdomain mit individuellem Branding, eigenen Beitragstabellen und Satzungen. Die Daten aller Mandanten liegen in einer gemeinsamen Datenbank, sind aber strikt voneinander getrennt.
Tenant-Identifikation
Section titled “Tenant-Identifikation”Der Mandant wird über die Subdomain der Anfrage aufgelöst
(z. B. demo.example-domain). Eine Middleware extrahiert den Tenant aus dem
Hostnamen und stellt ihn als Kontext für den gesamten Request bereit.
Datenisolation
Section titled “Datenisolation”tenantIdauf jeder fachlichen Entität — alle Tabellen mit Fachdaten tragen eine Mandanten-Referenz.- Applikationsseitige Filterung — ein Tenant-Context-Interceptor stellt sicher, dass Queries automatisch auf den aktuellen Mandanten eingeschränkt werden.
- Datenbankseitige Isolation — Row-Level-Security (RLS) in PostgreSQL bildet eine zusätzliche Schutzschicht (Defense in Depth).
Cross-Tenant-Zugriffe
Section titled “Cross-Tenant-Zugriffe”Ein Zugriff auf Daten eines fremden Mandanten muss 404 / NOT_FOUND liefern — nicht 403. Dadurch wird nicht verraten, ob eine Ressource in einem anderen Mandanten existiert.
Support-Zugriff
Section titled “Support-Zugriff”Support-Agenten können mandantenübergreifend arbeiten. Dieser Zugriff ist eigenständig abgesichert: separate Rolle, MFA-Pflicht und vollständige Audit-Protokollierung.
