betool ist für regulierte Umgebungen konzipiert. Sicherheit ist keine Schicht, die nachträglich aufgesetzt wird: Sie ist die Invariante, die jede Codezeile, jede Migration und jedes Modul prägt.
1. Strikte Mandantentrennung
Jede Organisation besitzt ihre eigenen Daten, Pipelines, Geheimnisse, Dateien und LLM-Schlüssel. Die Isolation wird durchgesetzt:
- Auf Datenbankebene — jede Geschäftstabelle trägt eine indizierte Spalte
org_id, und serverseitige Abfragen filtern immer nach der Sitzungsorganisation. - Auf Dateisystemebene — jede Organisation hat ihr eigenes Stammverzeichnis unter
<data_root>/orgs/<org_id>/. Keine gemeinsam genutzten Pfade. - Auf Cache-Ebene — Caches pro Organisation; kein gemeinsamer Eintrag ohne ein explizites Flag
is_shared = TRUE. - Auf Geheimnisebene — jede Organisation hat ihren eigenen Tresor, ihre eigenen API-Schlüssel, ihre eigenen Tokens. Kein globaler Fallback. Auch die in der Konfiguration eines Knotens eingegebenen Secrets (HMAC-Secret, Token, Passwort) sind überall maskiert, wo die Konfiguration erneut gelesen wird — Editor, API, von einer KI gelesene MCP-Tools, Vorschläge.
2. Verpflichtende Auditierung mandantenübergreifender Zugriffe
Bestimmte Rollen (typischerweise Plattformbetreiber-Konten auf Anbieterseite) könnten aus Support-Gründen auf die Inhalte einer anderen Organisation zugreifen müssen. Ein solcher Zugriff ist:
- An ein Opt-in der Zielorganisation gebunden — jederzeit über das Administrationspanel widerrufbar.
- Bei jedem Zugriff protokolliert — dedizierte Audit-Tabelle, auf die Zielorganisation begrenzt, für Kunden über eine Route
GET /api/admin/me/*-readseinsehbar. - Verweigert, wenn der Audit-Schreibvorgang fehlschlägt — kein Lesevorgang ohne Nachweis.
Siehe DSGVO-Audit.
3. Begründete Verweigerung bei destruktiven Operationen
Jede Operation, die den Inhalt einer anderen Organisation zerstört oder ersetzt (REPLACE-IN-PLACE von Kindelementen, DELETE), wird verweigert, wenn die Zielorganisation das Lese-Opt-in nicht aktiviert hat. Begründung: Ohne Sichtbarkeit würde der Operator eine Nutzlast vorschlagen, die bestehende Inhalte blind überschreiben könnte.
4. Souveränität über das LLM-Modell
- Natives BYOK — Ihre Schlüssel für OpenAI, Anthropic und Google werden von Ihrer Organisation verwaltet. Kein organisationsübergreifendes Durchsickern. BYOK ist optional (es gibt managed Modelle, abgerechnet in Credits), wird in regulierten Umgebungen aber empfohlen.
- Private Modelle — Ollama, LM Studio oder ein beliebiger OpenAI-kompatibler Endpunkt (vLLM…), gehostet bei Ihnen oder in Ihrer Private Cloud. Prompts und Completions verlassen niemals Ihren Perimeter.
- Kein stiller gemeinsamer Pool — verwendet eine Organisation ein gemeinsames Modell, ist dies eine explizite Entscheidung mit Zugriffskontrolle.
Ingenieurhaltung
Unser Standard ist Präzision: maximale Robustheit, vollständige Beobachtbarkeit, Determinismus, Anti-Halluzination, Anti-Regression, Tests an jeder Ecke.
Konkret bedeutet das bei jedem Kompromiss in Architektur / Code / Prompt:
| Wahl | Erwartete Wahl | Warum |
|---|---|---|
| Latenz × 2 vs. abgekürztes Reasoning | × 2 | Verlorene Präzision wird durch das Vertrauen der Nutzer zurückgezahlt |
| Feingranulare Beobachtbarkeit vs. nur wesentliche Logs | Feingranular | Ohne Sichtbarkeit ist Debugging blind |
| Abkürzung, die ein Verhalten verschlechtert | Verweigerung | Verhaltensrisiko wird in Kundenvorfällen gemessen |
Mantra: „Wenn jemand einen Fehler findet, bedeutet das, dass wir nicht genug Schutzvorrichtungen hatten, nicht zu viele.“