# Mandantenmodell

Orderport ist ein Multi-Tenant-Dienst. Jeder Kunde ist ein eigener **Mandant** (intern: Tenant). Alle Daten sind strikt nach Mandant getrennt – andere Kunden können Ihre Daten nicht sehen oder verändern.

Diese Seite fasst zusammen, was das für Sie bedeutet und wie die Trennung technisch umgesetzt ist.

## Was das für Sie bedeutet

- **Ihre Pipelines, Credentials, Bestellungen, Audit-Logs** sind nur für Benutzer Ihres Mandanten sichtbar.
- **Benutzer-Accounts gehören zu einem Mandanten.** Wer bei der Anmeldung eine Firma angibt, legt einen neuen Mandanten an. Weitere Benutzer werden auf Anfrage innerhalb desselben Mandanten angelegt.
- **Rechnungen und Abonnement** gehören dem Mandanten, nicht dem einzelnen Benutzer.
- **Einstellungen wie Session-Timeout oder IP-Allowlist** gelten mandantenweit für alle Benutzer.

## Wie die Trennung funktioniert

Alle Datenbank-Tabellen, die mandantenspezifische Daten enthalten, haben eine `tenant_id`-Spalte. Jede Abfrage wird automatisch auf diese `tenant_id` eingeschränkt – das System sorgt dafür, dass Sie keine Fremddaten sehen können, auch nicht versehentlich durch einen Programmierfehler.

Die Absicherung läuft auf drei Ebenen:

1. **Automatischer Daten-Filter**: Alle mandantenbezogenen Datenzugriffe werden automatisch auf die eigene Mandanten-ID eingeschränkt.
2. **Autorisierungs-Prüfung**: Jede Aktion prüft zusätzlich, ob der eingeloggte Benutzer für diese konkrete Ressource berechtigt ist.
3. **Tests**: Für jede Aktion existiert ein Isolations-Test, der sicherstellt, dass Kunde A nicht auf Daten von Kunde B zugreifen kann.

Das ist Teil der laufenden Qualitätssicherung, nicht nur Anspruch.

## Grenzen der Trennung

- **Der gemeinsame Server**: Orderport läuft auf gemeinsamen Servern und einer gemeinsamen Datenbank. „Ihre" Daten liegen physisch neben denen anderer Kunden, werden aber logisch strikt getrennt.
- **Statistik-Aggregate**: Interne Zahlen (Anzahl Mandanten, Gesamtbestellungen) werden für Produktentwicklung aggregiert. Keine individuellen Bestelldaten.
- **Support-Zugriff**: Orderport-Support kann mit expliziter Freigabe auf einen einzelnen Mandanten zugreifen – immer nur nach Anforderung und immer nachvollziehbar im Audit-Log.

## Besondere Rollen

- **Demo-Tenants**: Konten für Testzwecke. Sie haben alle Addon-Features freigeschaltet und dürfen sich wie Bezahlkunden verhalten. Auf Anfrage werden sie wieder in reguläre Test-Accounts umgewandelt.
- **Admin-Konten**: Orderport-Mitarbeiter haben einen **eigenen** Account-Typ (kein Mandant-Bezug) mit Zugriff auf ein separates Admin-Panel. Diese Konten sehen keine Kundendaten, können aber Mandanten-Metadaten (z. B. Plan-Zuordnung) verwalten.

## Technische Details

### Drei Schichten Isolation

Bei jedem Datenzugriff greifen drei Prüfungen ineinander:

1. **Automatischer Filter** auf jedem Datenbank-Query – Bestellungen, Pipelines, Credentials und alle anderen mandantenbezogenen Daten werden automatisch auf den aktuellen Mandanten eingeschränkt.
2. **Autorisierungs-Prüfung** bei jeder Aktion, die eine einzelne Ressource betrifft. Bei Mismatch: HTTP 403 oder 404.
3. **Automatisierte Tests** – für jede Aktion existiert ein Isolations-Test, der genau diesen Fall absichert: Kunde A darf nicht auf Daten von Kunde B zugreifen.

### Queue-Verarbeitung

Hintergrund-Aufgaben (Transformation, Zustellung) laufen in einer Queue. Der Mandanten-Kontext wird zusammen mit jedem Auftrag übergeben und vor jedem Durchlauf neu gesetzt – so gelten dieselben Isolations-Regeln wie für HTTP-Requests.

## Wenn Sie Data-Processing-Dokumente brauchen

Für die DSGVO-Dokumentation finden Sie:

- **Datenschutzerklärung**: `/datenschutz`
- **Auftragsverarbeitungsvereinbarung (AVV)**: `/legal/avv`
- **Impressum**: `/impressum`
- **AGB**: `/agb`

## Nächste Schritte

- [Sicherheit](/docs/sicherheit) – 2FA, IP-Allowlist, Sessions
- [Audit-Log](/docs/audit-log)
- [Glossar](/docs/glossar)
