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 ses propres clés API et tokens, stockés côté serveur et jamais réexposés en clair. Pas de fallback global. Les secrets saisis dans la configuration d'un nœud (secret HMAC, token, mot de passe) sont eux aussi masqués partout où la configuration est relue — éditeur, API, outils MCP lus par une IA, propositions.
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
GET /api/admin/me/supervisor-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, Google sont gérées par votre organisation. Aucune fuite cross-org. BYOK est facultatif (des modèles managés existent, facturés en crédits) mais recommandé en environnement régulé.
- Modèles privés — Ollama, LM Studio ou tout endpoint compatible OpenAI (vLLM…) hébergé 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. »