[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fsecurite\u002Fprincipes":3,"docs-nav-fr":434},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":428,"_id":429,"_source":430,"_file":431,"_stem":432,"_extension":433},"\u002Fdocs\u002Fsecurite\u002Fprincipes","securite",false,"","Principes de sécurité","Les quatre engagements non négociables de betool : multi-tenant strict, audit des accès cross-tenant, refus motivé des opérations destructives, LLM souverains.",{"type":11,"children":12,"toc":419},"root",[13,29,36,48,132,138,150,190,203,209,221,227,260,266,282,287,374,384,390],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18,21,27],{"type":19,"value":20},"text","betool est conçu pour des ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"environnements régulés",{"type":19,"value":28},". 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.",{"type":14,"tag":30,"props":31,"children":33},"h2",{"id":32},"_1-multi-tenant-strict",[34],{"type":19,"value":35},"1. Multi-tenant strict",{"type":14,"tag":15,"props":37,"children":38},{},[39,41,46],{"type":19,"value":40},"Chaque organisation possède ",{"type":14,"tag":22,"props":42,"children":43},{},[44],{"type":19,"value":45},"ses propres",{"type":19,"value":47}," données, pipelines, secrets, fichiers et clés LLM. L'isolation est appliquée :",{"type":14,"tag":49,"props":50,"children":51},"ul",{},[52,79,97,115],{"type":14,"tag":53,"props":54,"children":55},"li",{},[56,61,63,70,72,77],{"type":14,"tag":22,"props":57,"children":58},{},[59],{"type":19,"value":60},"À la base de données",{"type":19,"value":62}," — toutes les tables métier portent une colonne ",{"type":14,"tag":64,"props":65,"children":67},"code",{"className":66},[],[68],{"type":19,"value":69},"org_id",{"type":19,"value":71}," indexée, et les requêtes côté serveur filtrent ",{"type":14,"tag":22,"props":73,"children":74},{},[75],{"type":19,"value":76},"toujours",{"type":19,"value":78}," par l'org de la session.",{"type":14,"tag":53,"props":80,"children":81},{},[82,87,89,95],{"type":14,"tag":22,"props":83,"children":84},{},[85],{"type":19,"value":86},"Au système de fichiers",{"type":19,"value":88}," — chaque org a sa racine sous ",{"type":14,"tag":64,"props":90,"children":92},{"className":91},[],[93],{"type":19,"value":94},"\u003Cdata_root>\u002Forgs\u002F\u003Corg_id>\u002F",{"type":19,"value":96},". Aucun chemin partagé.",{"type":14,"tag":53,"props":98,"children":99},{},[100,105,107,113],{"type":14,"tag":22,"props":101,"children":102},{},[103],{"type":19,"value":104},"Aux caches",{"type":19,"value":106}," — caches per-org, jamais d'entrée mutualisée sans flag explicite ",{"type":14,"tag":64,"props":108,"children":110},{"className":109},[],[111],{"type":19,"value":112},"is_shared = TRUE",{"type":19,"value":114},".",{"type":14,"tag":53,"props":116,"children":117},{},[118,123,125,130],{"type":14,"tag":22,"props":119,"children":120},{},[121],{"type":19,"value":122},"Aux secrets",{"type":19,"value":124}," — 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 ",{"type":14,"tag":22,"props":126,"children":127},{},[128],{"type":19,"value":129},"masqués partout où la configuration est relue",{"type":19,"value":131}," — éditeur, API, outils MCP lus par une IA, propositions.",{"type":14,"tag":30,"props":133,"children":135},{"id":134},"_2-audit-obligatoire-des-accès-cross-tenant",[136],{"type":19,"value":137},"2. Audit obligatoire des accès cross-tenant",{"type":14,"tag":15,"props":139,"children":140},{},[141,143,148],{"type":19,"value":142},"Certains rôles (typiquement les opérateurs de la plateforme côté vendor) ",{"type":14,"tag":22,"props":144,"children":145},{},[146],{"type":19,"value":147},"peuvent",{"type":19,"value":149}," avoir besoin d'accéder à du contenu d'une autre organisation pour le support. Cet accès est :",{"type":14,"tag":49,"props":151,"children":152},{},[153,163,180],{"type":14,"tag":53,"props":154,"children":155},{},[156,161],{"type":14,"tag":22,"props":157,"children":158},{},[159],{"type":19,"value":160},"Conditionné à un opt-in côté organisation cible",{"type":19,"value":162}," — révocable à tout moment depuis l'admin.",{"type":14,"tag":53,"props":164,"children":165},{},[166,171,173,179],{"type":14,"tag":22,"props":167,"children":168},{},[169],{"type":19,"value":170},"Journalisé à chaque accès",{"type":19,"value":172}," — table d'audit dédiée, scopée par org cible, exposée aux clients via ",{"type":14,"tag":64,"props":174,"children":176},{"className":175},[],[177],{"type":19,"value":178},"GET \u002Fapi\u002Fadmin\u002Fme\u002Fsupervisor-reads",{"type":19,"value":114},{"type":14,"tag":53,"props":181,"children":182},{},[183,188],{"type":14,"tag":22,"props":184,"children":185},{},[186],{"type":19,"value":187},"Refusé en cascade si l'audit échoue",{"type":19,"value":189}," — pas de lecture sans trace.",{"type":14,"tag":15,"props":191,"children":192},{},[193,195,202],{"type":19,"value":194},"Voir ",{"type":14,"tag":196,"props":197,"children":199},"a",{"href":198},"\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",[200],{"type":19,"value":201},"Audit RGPD",{"type":19,"value":114},{"type":14,"tag":30,"props":204,"children":206},{"id":205},"_3-refus-motivé-sur-opérations-destructives",[207],{"type":19,"value":208},"3. Refus motivé sur opérations destructives",{"type":14,"tag":15,"props":210,"children":211},{},[212,214,219],{"type":19,"value":213},"Toute opération qui détruit ou remplace du contenu d'une autre organisation (REPLACE-IN-PLACE des enfants, DELETE) est ",{"type":14,"tag":22,"props":215,"children":216},{},[217],{"type":19,"value":218},"refusée",{"type":19,"value":220}," 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.",{"type":14,"tag":30,"props":222,"children":224},{"id":223},"_4-souveraineté-des-modèles-llm",[225],{"type":19,"value":226},"4. Souveraineté des modèles LLM",{"type":14,"tag":49,"props":228,"children":229},{},[230,240,250],{"type":14,"tag":53,"props":231,"children":232},{},[233,238],{"type":14,"tag":22,"props":234,"children":235},{},[236],{"type":19,"value":237},"BYOK natif",{"type":19,"value":239}," — 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é.",{"type":14,"tag":53,"props":241,"children":242},{},[243,248],{"type":14,"tag":22,"props":244,"children":245},{},[246],{"type":19,"value":247},"Modèles privés",{"type":19,"value":249}," — 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.",{"type":14,"tag":53,"props":251,"children":252},{},[253,258],{"type":14,"tag":22,"props":254,"children":255},{},[256],{"type":19,"value":257},"Pas de pool partagé silencieux",{"type":19,"value":259}," — si une org utilise un modèle shared, c'est une décision explicite avec contrôle d'accès.",{"type":14,"tag":30,"props":261,"children":263},{"id":262},"posture-dingénierie",[264],{"type":19,"value":265},"Posture d'ingénierie",{"type":14,"tag":267,"props":268,"children":269},"blockquote",{},[270],{"type":14,"tag":15,"props":271,"children":272},{},[273,275,280],{"type":19,"value":274},"Notre standard est la ",{"type":14,"tag":22,"props":276,"children":277},{},[278],{"type":19,"value":279},"précision",{"type":19,"value":281}," : robustesse maximale, observabilité totale, déterminisme, anti-confabulation, anti-régression, tests à chaque coin.",{"type":14,"tag":15,"props":283,"children":284},{},[285],{"type":19,"value":286},"Concrètement, à chaque arbitrage architecture \u002F code \u002F prompt :",{"type":14,"tag":288,"props":289,"children":290},"table",{},[291,315],{"type":14,"tag":292,"props":293,"children":294},"thead",{},[295],{"type":14,"tag":296,"props":297,"children":298},"tr",{},[299,305,310],{"type":14,"tag":300,"props":301,"children":302},"th",{},[303],{"type":19,"value":304},"Choix",{"type":14,"tag":300,"props":306,"children":307},{},[308],{"type":19,"value":309},"Choix attendu",{"type":14,"tag":300,"props":311,"children":312},{},[313],{"type":19,"value":314},"Pourquoi",{"type":14,"tag":316,"props":317,"children":318},"tbody",{},[319,338,356],{"type":14,"tag":296,"props":320,"children":321},{},[322,328,333],{"type":14,"tag":323,"props":324,"children":325},"td",{},[326],{"type":19,"value":327},"Latence × 2 vs raisonnement abrégé",{"type":14,"tag":323,"props":329,"children":330},{},[331],{"type":19,"value":332},"× 2",{"type":14,"tag":323,"props":334,"children":335},{},[336],{"type":19,"value":337},"La précision perdue se paye en confiance utilisateur",{"type":14,"tag":296,"props":339,"children":340},{},[341,346,351],{"type":14,"tag":323,"props":342,"children":343},{},[344],{"type":19,"value":345},"Capture observabilité fine vs logs essentiels",{"type":14,"tag":323,"props":347,"children":348},{},[349],{"type":19,"value":350},"Capture fine",{"type":14,"tag":323,"props":352,"children":353},{},[354],{"type":19,"value":355},"Sans visibilité on diagnostique à l'aveugle",{"type":14,"tag":296,"props":357,"children":358},{},[359,364,369],{"type":14,"tag":323,"props":360,"children":361},{},[362],{"type":19,"value":363},"Shortcut qui dégrade un comportement",{"type":14,"tag":323,"props":365,"children":366},{},[367],{"type":19,"value":368},"Refus",{"type":14,"tag":323,"props":370,"children":371},{},[372],{"type":19,"value":373},"Le risque comportemental se mesure en incident client",{"type":14,"tag":15,"props":375,"children":376},{},[377,382],{"type":14,"tag":22,"props":378,"children":379},{},[380],{"type":19,"value":381},"Mantra",{"type":19,"value":383}," : « 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. »",{"type":14,"tag":30,"props":385,"children":387},{"id":386},"pour-aller-plus-loin",[388],{"type":19,"value":389},"Pour aller plus loin",{"type":14,"tag":49,"props":391,"children":392},{},[393,402,410],{"type":14,"tag":53,"props":394,"children":395},{},[396],{"type":14,"tag":196,"props":397,"children":399},{"href":398},"\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",[400],{"type":19,"value":401},"Cloisonnement multi-tenant",{"type":14,"tag":53,"props":403,"children":404},{},[405],{"type":14,"tag":196,"props":406,"children":407},{"href":198},[408],{"type":19,"value":409},"Audit RGPD & journal d'accès",{"type":14,"tag":53,"props":411,"children":412},{},[413],{"type":14,"tag":196,"props":414,"children":416},{"href":415},"\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",[417],{"type":19,"value":418},"Déploiement souverain",{"title":7,"searchDepth":420,"depth":420,"links":421},2,[422,423,424,425,426,427],{"id":32,"depth":420,"text":35},{"id":134,"depth":420,"text":137},{"id":205,"depth":420,"text":208},{"id":223,"depth":420,"text":226},{"id":262,"depth":420,"text":265},{"id":386,"depth":420,"text":389},"markdown","content:docs:5.securite:1.principes.md","content","docs\u002F5.securite\u002F1.principes.md","docs\u002F5.securite\u002F1.principes","md",[435],{"title":436,"_path":437,"children":438},"Docs","\u002Fdocs",[439,452,480,508,521,530,543,604],{"title":440,"_path":441,"children":442},"Démarrer","\u002Fdocs\u002Fdemarrer",[443,446,449],{"title":444,"_path":445},"Bienvenue","\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":447,"_path":448},"Créer un compte","\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":450,"_path":451},"Brancher une clé LLM","\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":453,"_path":454,"children":455},"Canaux","\u002Fdocs\u002Fcanaux",[456,459,462,465,468,471,474,477],{"title":457,"_path":458},"Vue d'ensemble des canaux","\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":460,"_path":461},"Téléphonie temps réel","\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":463,"_path":464},"Email","\u002Fdocs\u002Fcanaux\u002Femail",{"title":466,"_path":467},"Chat widget web","\u002Fdocs\u002Fcanaux\u002Fchat-widget",{"title":469,"_path":470},"Webhook HTTP","\u002Fdocs\u002Fcanaux\u002Fwebhook",{"title":472,"_path":473},"Messageries (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":475,"_path":476},"Meta Lead Ads","\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":478,"_path":479},"Planification (cron)","\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":481,"_path":482,"children":483},"Pipelines","\u002Fdocs\u002Fpipelines",[484,487,490,493,496,499,502,505],{"title":485,"_path":486},"L'éditeur visuel","\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":488,"_path":489},"Agents IA","\u002Fdocs\u002Fpipelines\u002Fagents",{"title":491,"_path":492},"Opérateurs déterministes","\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":494,"_path":495},"Contrôle de flux","\u002Fdocs\u002Fpipelines\u002Fcontrole-flux",{"title":497,"_path":498},"Étapes de code","\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":500,"_path":501},"Sous-pipelines","\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":503,"_path":504},"Actions sans code","\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":506,"_path":507},"Base de connaissances","\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":509,"_path":510,"children":511},"Supervision","\u002Fdocs\u002Fsupervision",[512,515,518],{"title":513,"_path":514},"Historique d'exécutions","\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":516,"_path":517},"Crédits & metering","\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":519,"_path":520},"Benchmarks","\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":522,"_path":523,"children":524},"Sécurité","\u002Fdocs\u002Fsecurite",[525,526,528,529],{"title":8,"_path":4},{"title":527,"_path":398},"Multi-tenant strict",{"title":409,"_path":198},{"title":418,"_path":415},{"title":531,"_path":532,"children":533},"Développeurs","\u002Fdocs\u002Fdeveloppeurs",[534,537,540],{"title":535,"_path":536},"API admin","\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":538,"_path":539},"Webhooks sortants","\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":541,"_path":542},"Piloter betool depuis Claude (MCP)","\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":544,"_path":545,"children":546},"Intégrations","\u002Fdocs\u002Fintegrations",[547,550,553,556,559,562,565,568,571,574,577,580,583,586,589,592,595,598,601],{"title":548,"_path":549},"Vue d'ensemble des intégrations","\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":551,"_path":552},"Stripe","\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":554,"_path":555},"GitHub","\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":557,"_path":558},"Google","\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":560,"_path":561},"LinkedIn Ads","\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":563,"_path":564},"Kavkom","\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":566,"_path":567},"Jira","\u002Fdocs\u002Fintegrations\u002Fjira",{"title":569,"_path":570},"Slack","\u002Fdocs\u002Fintegrations\u002Fslack",{"title":572,"_path":573},"SMS","\u002Fdocs\u002Fintegrations\u002Fsms",{"title":575,"_path":576},"Enable Banking (open banking)","\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":578,"_path":579},"CRM, marketing & productivité","\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":581,"_path":582},"HeyGen (vidéo)","\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":584,"_path":585},"La Poste","\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":587,"_path":588},"CRM métier (beTool Application, Qhare)","\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":590,"_path":591},"Mitti (inspections terrain)","\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":593,"_path":594},"Meta (Messenger, Pages, Meta Ads)","\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":596,"_path":597},"Onoff Business (Beta)","\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":599,"_path":600},"Smart Life \u002F Tuya (objets connectés)","\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":602,"_path":603},"Produits beTool (Desktop, Kiosk, Terminal)","\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":605,"_path":606,"children":607},"Cas d'usage","\u002Fdocs\u002Fcas-usage",[608,611,614,617,620,623],{"title":609,"_path":610},"Agents métier types","\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":612,"_path":613},"CFO IA","\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":615,"_path":616},"COO IA","\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":618,"_path":619},"CTO IA","\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":621,"_path":622},"Product Manager IA","\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":624,"_path":625},"Assistant personnel","\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]