Skip to content

Multi-Tenancy

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.

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.

  • tenantId auf 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).

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-Agenten können mandantenübergreifend arbeiten. Dieser Zugriff ist eigenständig abgesichert: separate Rolle, MFA-Pflicht und vollständige Audit-Protokollierung.