Mandantenisolation: Kontrollspezifikation
Definiert Mandantenisolation als eine durchgängige Invariante über Identitäten, Datenbankabfragen, Objektspeicher, Suche, Caches, Warteschlangen, Exporte, Protokolle und Verwaltung mit einem auf Verweigerung fokussierten Verifizierungsansatz.
Paketstatus: Referenzkontext bereit zur menschlichen Überprüfung. Der Vertrag und die Testszenarien sind vollständig, es wird jedoch nicht behauptet, dass eine übernehmende Implementierung diese bestanden hat.
Entscheidung
Löse den Mandantenkontext aus der authentifizierten Mitgliedschaft auf und setze ihn an jeder Daten-Grenze durch. Vertraue niemals allein auf eine vom Client übermittelte Mandantenkennung; binde Ressourcenidentität und Autorisierung an den aufgelösten Mandanten und lehne bei fehlendem Kontext geschlossen ab.
Umfang
- Mandantenkontext, Mitgliedschaften, Ressourcenbesitz, Datenbank, Speicher, Cache, Suche, Hintergrundarbeiten, Export, Analysen, Protokolle, Support-Tools und Tests.
- Gemeinsame Infrastruktur, die mehrere Kundenorganisationen bedient.
- Kontrollnachweise und Vorfallsindikatoren.
Außerhalb dieses Blocks
- Mandantenfähigkeit durch dedizierte Infrastruktur als einzige gültige Architektur.
- Verwendung schwer zu erratender IDs als Isolation.
Vertrag
- Authentifiziertes Subjekt plus ausgewählte Mitgliedschaft ergeben einen Mandantenkontext pro Anfrage; jeder Ressourcen-Zugriff prüft den Besitz daran.
- Datenbankzugriffe wenden Mandanten-Prädikate strukturell an, mit Zeilenebenenkontrollen oder Repository-Schutz als Tiefenverteidigung.
- Cache-, Ratenbegrenzungs-, Idempotenz-, Cursor- und Sperrschlüssel enthalten Mandant und Umgebung.
- Objekt-Schlüssel, Suchdokumente, Vektorabfragen, Warteschlangen und Job-Payloads tragen Mandantenkontext, der gegen Besitznachweise verifiziert wird.
- Aggregierte Zählungen, Existenzfehler, Protokolle, Traces, Exporte, Backups und Support-Ansichten dürfen keinen anderen Mandanten durch indirektes Verhalten offenbaren.
- Privilegierte mandantenübergreifende Operationen verwenden separate Berechtigungen, Begründung, begrenzten Umfang, Ablauf und Audit.
Implementierungshinweise
- Erstelle typisierten Mandantenkontext, der im Domänen-Code nicht aus beliebigen Anforderungsfeldern konstruiert werden kann.
- Erfordere, dass Datenzugriffs-APIs Kontext akzeptieren und mache unbeschränkte Aufrufe für gewöhnlichen Anwendungscode unzugänglich.
- Verwende synthetische Mandantenpaar-Tests über jede Speicher- und Servierschicht hinweg.
- Überprüfe Tracing- und Metrikdimensionen, um hohe Kardinalität oder sensible Mandantenlecks zu vermeiden.
Fehlerbehandlung und Schutzmaßnahmen
- Fehlender oder widersprüchlicher Mandantenkontext verweigert den Zugriff und erzeugt ein korrelationssicheres Sicherheitsereignis.
- Hintergrundnachrichten mit ungültigem Mandantenbesitz werden in Quarantäne genommen; Verbraucher raten nicht.
- Support-Impersonation endet bei Ablauf oder Wechsel von Akteur/Sitzung und zeigt ein dauerhaftes Banner an.
Verifikation und Betrieb
- Messe mandantenübergreifende Verweigerungen, fehlenden Kontext, Besitzinkongruenzen, Nutzung privilegierter Sitzungen, Erkennung unbeschränkter Abfragen und Ergebnisse synthetischer Isolationsprüfungen.
- Führe Verweigerungstests nach Schema-, Index-, Cache- oder Jobänderungen aus.
- Behandle jede bestätigte mandantenübergreifende Offenlegung als Sicherheitsvorfall mit gesichertem Nachweis.
Die ausführbar aussehenden Beispiele in diesem Paket sind Fixtures und Akzeptanzverträge. Führe
python tools/validate.py vom Wurzelverzeichnis der Sammlung aus, um Paketstruktur und Metadaten zu prüfen; implementiere und führe dann die Szenarien im Ziel-Repository aus.
Annahmen zur Übernahme
- Namen und numerische Werte in
example.yamlsind ein Übernahmeprofil, keine universellen Standardwerte. - Das übernehmende Team muss Akteure, Datenklassen, Fehler-Vokabular und Besitz auf sein System abbilden.