Principes de sécurité
betool est conçu pour des environnements régulés. La sécurité n'est pas une couche ajoutée tardivement : c'est l'invariant qui structure chaque ligne de code, chaque migration, chaque module.
1. Multi-tenant strict
Chaque organisation possède ses propres données, pipelines, secrets, fichiers et clés LLM. L'isolation est appliquée :
- À la base de données — toutes les tables métier portent une colonne
org_idindexée, et les requêtes côté serveur filtrent toujours par l'org de la session. - Au système de fichiers — chaque org a sa racine sous
<data_root>/orgs/<org_id>/. Aucun chemin partagé. - Aux caches — caches per-org, jamais d'entrée mutualisée sans flag explicite
is_shared = TRUE. - Aux secrets — chaque org a son coffre, ses clés API, ses tokens. Pas de fallback global.
2. Audit obligatoire des accès cross-tenant
Certains rôles (typiquement les opérateurs de la plateforme côté vendor) peuvent avoir besoin d'accéder à du contenu d'une autre organisation pour le support. Cet accès est :
- Conditionné à un opt-in côté organisation cible — révocable à tout moment depuis l'admin.
- Journalisé à chaque accès — table d'audit dédiée, scopée par org cible, exposée aux clients via une route GET
/api/admin/me/*-reads. - Refusé en cascade si l'audit échoue — pas de lecture sans trace.
Voir Audit RGPD.
3. Refus motivé sur opérations destructives
Toute opération qui détruit ou remplace du contenu d'une autre organisation (REPLACE-IN-PLACE des enfants, DELETE) est refusée si l'org cible n'a pas activé l'opt-in lecture. Raison : sans visibilité, l'opérateur propose à l'aveugle un payload qui écraserait l'existant.
4. Souveraineté des modèles LLM
- BYOK natif — vos clés OpenAI, Anthropic, Mistral sont gérées par votre organisation. Aucune fuite cross-org.
- Modèles privés en Enterprise — Ollama, vLLM hébergés chez vous ou dans votre cloud privé. Les prompts et complétions ne sortent jamais de votre périmètre.
- Pas de pool partagé silencieux — si une org utilise un modèle shared, c'est une décision explicite avec contrôle d'accès.
Posture d'ingénierie
Notre standard est la précision : robustesse maximale, observabilité totale, déterminisme, anti-confabulation, anti-régression, tests à chaque coin.
Concrètement, à chaque arbitrage architecture / code / prompt :
| Choix | Choix attendu | Pourquoi |
|---|---|---|
| Latence × 2 vs raisonnement abrégé | × 2 | La précision perdue se paye en confiance utilisateur |
| Capture observabilité fine vs logs essentiels | Capture fine | Sans visibilité on diagnostique à l'aveugle |
| Shortcut qui dégrade un comportement | Refus | Le risque comportemental se mesure en incident client |
Mantra : « Si quelqu'un trouve un bug, c'est qu'on n'avait pas mis assez de garde-fous, pas qu'on en avait mis trop. »