Mandantenfähigkeit heißt: Alle Kunden nutzen dieselbe Anwendung, aber jeder sieht ausschließlich seine eigenen Daten. Das klingt nach einer Anforderung wie jede andere. Es ist die einzige, die man praktisch nicht mehr nachrüsten kann, ohne die Datenbank neu zu schreiben.
Warum es beim Nachrüsten teuer wird
Wer ohne Mandantenkonzept beginnt, filtert irgendwann in der Anwendung. Jede Abfrage bekommt eine zusätzliche Bedingung auf die Organisation. Das funktioniert, solange alle Abfragen daran denken. Bei zweihundert Abfragen denkt eine nicht daran, und dann sieht Kunde A die Daten von Kunde B.
Der Unterschied zu einem gewöhnlichen Fehler ist die Klasse des Schadens. Ein falsch berechneter Rabatt ist ein Ticket. Ein Datenleck zwischen zwei Kunden ist ein meldepflichtiger Vorfall nach DSGVO, ein Vertrauensverlust und je nach Branche ein vertragliches Problem.
Wo die Trennung hingehört
In die Datenbank. Row Level Security in PostgreSQL erzwingt die Trennung dort, wo die Daten liegen: Eine Abfrage ohne gültigen Mandantenkontext liefert keine Zeilen zurück, unabhängig davon, was der Anwendungscode vergessen hat. Die Anwendung darf die Regel dann nicht mehr umgehen, weil sie sie nicht mehr kennt.
- Mandant als Spalte auf jeder Tabelle, die Kundendaten hält — ohne Ausnahme
- Row Level Security aktiviert, nicht nur definiert
- Der Mandantenkontext kommt aus der Sitzung, nie aus einem Parameter der Anfrage
- Ein Test, der ohne Kontext abfragt und beweist, dass nichts zurückkommt
Was das in der Praxis heißt
Bei Enclessa war Vertraulichkeit die Grundvoraussetzung des Produkts: Direktnachrichten sind Ende-zu-Ende verschlüsselt nach MLS (RFC 9420), gehostet in der EU. Bei TixFin geht es um Veranstalter, die Saalpläne und Zahlungen in Echtzeit teilen, ohne dass zwei Veranstalter je dieselbe Zeile sehen. Beide Produkte haben ihr Mandantenmodell vor der ersten Migration festgelegt, weil wir wussten, dass wir es sonst zweimal bauen.
Jede Entscheidung, die man später ändern kann, darf man später treffen. Die Datentrennung gehört nicht dazu.
Die Gegenprobe
Wenn Sie eine bestehende Plattform übernehmen, ist das die erste Frage: Woran hängt die Trennung? Steht die Antwort in der Anwendung, ist die ehrliche Schätzung für eine Umstellung kein Sprint, sondern eine Migration mit Ausfallfenster. Wir sehen uns deshalb den Code an, bevor wir ein Angebot schreiben.