[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fsecurite\u002Faudit-rgpd":3,"docs-nav-fr":400},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":394,"_id":395,"_source":396,"_file":397,"_stem":398,"_extension":399},"\u002Fdocs\u002Fsecurite\u002Faudit-rgpd","securite",false,"","Audit RGPD & journal d'accès","Comment betool trace les accès cross-tenant au contenu utilisateur et outille le droit d'accès (article 15) et le droit à l'effacement (article 17).",{"type":11,"children":12,"toc":384},"root",[13,21,28,33,111,130,136,155,164,169,174,180,193,206,212,234,257,267,273,285,291,303,308,314,333,379],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18],{"type":19,"value":20},"text","betool est conçu pour répondre aux exigences du RGPD sans bricolage : chaque accès au contenu utilisateur par un agent appartenant à une autre organisation est journalisé, et chaque organisation peut consulter son propre journal.",{"type":14,"tag":22,"props":23,"children":25},"h2",{"id":24},"le-journal-daccès",[26],{"type":19,"value":27},"Le journal d'accès",{"type":14,"tag":15,"props":29,"children":30},{},[31],{"type":19,"value":32},"Une table dédiée enregistre, pour chaque accès cross-tenant :",{"type":14,"tag":34,"props":35,"children":36},"ul",{},[37,43,56,67,72,84,106],{"type":14,"tag":38,"props":39,"children":40},"li",{},[41],{"type":19,"value":42},"L'horodatage",{"type":14,"tag":38,"props":44,"children":45},{},[46,48,54],{"type":19,"value":47},"L'org ",{"type":14,"tag":49,"props":50,"children":51},"strong",{},[52],{"type":19,"value":53},"cible",{"type":19,"value":55}," (dont le contenu a été lu)",{"type":14,"tag":38,"props":57,"children":58},{},[59,60,65],{"type":19,"value":47},{"type":14,"tag":49,"props":61,"children":62},{},[63],{"type":19,"value":64},"lectrice",{"type":19,"value":66}," (typiquement le vendor)",{"type":14,"tag":38,"props":68,"children":69},{},[70],{"type":19,"value":71},"L'utilisateur qui a déclenché la lecture",{"type":14,"tag":38,"props":73,"children":74},{},[75,77,82],{"type":19,"value":76},"Le ",{"type":14,"tag":49,"props":78,"children":79},{},[80],{"type":19,"value":81},"tool",{"type":19,"value":83}," par lequel la lecture est passée",{"type":14,"tag":38,"props":85,"children":86},{},[87,89,96,98,104],{"type":19,"value":88},"Le type d'entité (vocabulaire fermé : ",{"type":14,"tag":90,"props":91,"children":93},"code",{"className":92},[],[94],{"type":19,"value":95},"context",{"type":19,"value":97}," pour une conversation, ",{"type":14,"tag":90,"props":99,"children":101},{"className":100},[],[102],{"type":19,"value":103},"scenario",{"type":19,"value":105}," pour un benchmark)",{"type":14,"tag":38,"props":107,"children":108},{},[109],{"type":19,"value":110},"L'ID de l'entité lue (et l'exchange précis quand la lecture cible un tour unique)",{"type":14,"tag":15,"props":112,"children":113},{},[114,116,121,123,128],{"type":19,"value":115},"Le vocabulaire d'entité est ",{"type":14,"tag":49,"props":117,"children":118},{},[119],{"type":19,"value":120},"fermé côté base",{"type":19,"value":122}," (CHECK constraint) et ",{"type":14,"tag":49,"props":124,"children":125},{},[126],{"type":19,"value":127},"fermé côté code",{"type":19,"value":129}," (whitelist applicative). Ajouter un type = nouvelle migration + maj whitelist. Pas d'entrée surprise.",{"type":14,"tag":22,"props":131,"children":133},{"id":132},"droit-daccès-article-15",[134],{"type":19,"value":135},"Droit d'accès (article 15)",{"type":14,"tag":15,"props":137,"children":138},{},[139,141,146,148,153],{"type":19,"value":140},"Chaque organisation peut consulter SES propres logs d'accès, dans ",{"type":14,"tag":49,"props":142,"children":143},{},[144],{"type":19,"value":145},"Paramètres de l'organisation → Confidentialité",{"type":19,"value":147}," (section ",{"type":14,"tag":49,"props":149,"children":150},{},[151],{"type":19,"value":152},"Journal des accès",{"type":19,"value":154},") ou via :",{"type":14,"tag":156,"props":157,"children":159},"pre",{"code":158},"GET \u002Fapi\u002Fadmin\u002Fme\u002Fsupervisor-reads\n",[160],{"type":14,"tag":90,"props":161,"children":162},{"__ignoreMap":7},[163],{"type":19,"value":158},{"type":14,"tag":15,"props":165,"children":166},{},[167],{"type":19,"value":168},"La route retourne les lectures en ordre chronologique décroissant (jusqu'à 1 000 entrées par appel).",{"type":14,"tag":15,"props":170,"children":171},{},[172],{"type":19,"value":173},"Aucun accès cross-org sur l'audit : le vendor ne voit jamais les logs d'audit du client.",{"type":14,"tag":22,"props":175,"children":177},{"id":176},"droit-à-leffacement-article-17",[178],{"type":19,"value":179},"Droit à l'effacement (article 17)",{"type":14,"tag":15,"props":181,"children":182},{},[183,185,191],{"type":19,"value":184},"L'architecture rend l'effacement exécutable proprement : toutes les données d'une organisation sont rattachées à son ",{"type":14,"tag":90,"props":186,"children":188},{"className":187},[],[189],{"type":19,"value":190},"org_id",{"type":19,"value":192}," (tables métier, dossiers de fichiers, secrets), ce qui permet un effacement ciblé — un utilisateur précis, une conversation précise, ou l'organisation entière — sans toucher au reste.",{"type":14,"tag":15,"props":194,"children":195},{},[196,198,204],{"type":19,"value":197},"Les demandes d'effacement (article 17) se traitent avec notre support : écrivez à ",{"type":14,"tag":90,"props":199,"children":201},{"className":200},[],[202],{"type":19,"value":203},"contact@betool.fr",{"type":19,"value":205}," depuis un compte administrateur de l'organisation concernée.",{"type":14,"tag":22,"props":207,"children":209},{"id":208},"opt-in-opt-out-lecture-cross-tenant",[210],{"type":19,"value":211},"Opt-in & opt-out lecture cross-tenant",{"type":14,"tag":15,"props":213,"children":214},{},[215,217,226,228,232],{"type":19,"value":216},"Par défaut, l'opt-in lecture cross-tenant est à ",{"type":14,"tag":49,"props":218,"children":219},{},[220],{"type":14,"tag":90,"props":221,"children":223},{"className":222},[],[224],{"type":19,"value":225},"FALSE",{"type":19,"value":227},". Un administrateur de l'organisation peut l'activer — et le révoquer à tout moment — dans ",{"type":14,"tag":49,"props":229,"children":230},{},[231],{"type":19,"value":145},{"type":19,"value":233},".",{"type":14,"tag":34,"props":235,"children":236},{},[237,247],{"type":14,"tag":38,"props":238,"children":239},{},[240,245],{"type":14,"tag":49,"props":241,"children":242},{},[243],{"type":19,"value":244},"Désactivé",{"type":19,"value":246}," — par défaut. Le vendor ne peut accéder à aucun contenu de cette org. Conséquence : pas de support cross-org possible sur ce qui touche au contenu (le support structurel reste possible).",{"type":14,"tag":38,"props":248,"children":249},{},[250,255],{"type":14,"tag":49,"props":251,"children":252},{},[253],{"type":19,"value":254},"Activé",{"type":19,"value":256}," — le superviseur peut lire les conversations de l'org pour diagnostiquer, chaque accès étant audité et consultable par l'org.",{"type":14,"tag":15,"props":258,"children":259},{},[260,265],{"type":14,"tag":49,"props":261,"children":262},{},[263],{"type":19,"value":264},"Le vendor ne peut PAS activer cet opt-in pour le compte du client.",{"type":19,"value":266}," C'est un test fondamental : si le vendor peut toggle sans action client, l'architecture est cassée.",{"type":14,"tag":22,"props":268,"children":270},{"id":269},"garde-fou-destructive-ops",[271],{"type":19,"value":272},"Garde-fou destructive ops",{"type":14,"tag":15,"props":274,"children":275},{},[276,278,283],{"type":19,"value":277},"Toute opération qui détruit ou remplace du contenu (DELETE, REPLACE-IN-PLACE) est ",{"type":14,"tag":49,"props":279,"children":280},{},[281],{"type":19,"value":282},"refusée au validateur",{"type":19,"value":284}," si l'org cible n'a pas activé l'opt-in lecture. Raison : sans visibility, l'opérateur propose à l'aveugle un payload qui écraserait l'existant.",{"type":14,"tag":22,"props":286,"children":288},{"id":287},"refus-en-cascade-si-audit-indisponible",[289],{"type":19,"value":290},"Refus en cascade si audit indisponible",{"type":14,"tag":15,"props":292,"children":293},{},[294,296,301],{"type":19,"value":295},"Si la base de données d'audit est indisponible (incident infra), toute lecture cross-tenant est ",{"type":14,"tag":49,"props":297,"children":298},{},[299],{"type":19,"value":300},"refusée",{"type":19,"value":302},". Politique stricte : pas de lecture sans trace.",{"type":14,"tag":15,"props":304,"children":305},{},[306],{"type":19,"value":307},"Conséquence côté code : un caller qui catch une exception doit re-raiser l'erreur d'audit avant tout traitement métier. C'est un invariant testé par le benchmark de sécurité.",{"type":14,"tag":22,"props":309,"children":311},{"id":310},"cookies-de-consentement",[312],{"type":19,"value":313},"Cookies de consentement",{"type":14,"tag":15,"props":315,"children":316},{},[317,319,324,326,331],{"type":19,"value":318},"Le site marketing (betool.ai) mesure son audience avec ",{"type":14,"tag":49,"props":320,"children":321},{},[322],{"type":19,"value":323},"Google Analytics 4",{"type":19,"value":325},", en ",{"type":14,"tag":49,"props":327,"children":328},{},[329],{"type":19,"value":330},"Consent Mode v2",{"type":19,"value":332}," :",{"type":14,"tag":34,"props":334,"children":335},{},[336,355,367],{"type":14,"tag":38,"props":337,"children":338},{},[339,341,346,348,353],{"type":19,"value":340},"Par défaut, tous les consentements Google (mesure, publicité) sont à ",{"type":14,"tag":49,"props":342,"children":343},{},[344],{"type":19,"value":345},"refusé",{"type":19,"value":347}," : le script Google Analytics n'est ",{"type":14,"tag":49,"props":349,"children":350},{},[351],{"type":19,"value":352},"pas chargé",{"type":19,"value":354}," et aucun cookie analytique n'est déposé.",{"type":14,"tag":38,"props":356,"children":357},{},[358,360,365],{"type":19,"value":359},"Le script n'est chargé, et la mesure activée, ",{"type":14,"tag":49,"props":361,"children":362},{},[363],{"type":19,"value":364},"qu'après votre acceptation explicite",{"type":19,"value":366}," de la mesure d'audience dans la bannière.",{"type":14,"tag":38,"props":368,"children":369},{},[370,372,377],{"type":19,"value":371},"Vous pouvez retirer ce consentement à tout moment (",{"type":14,"tag":49,"props":373,"children":374},{},[375],{"type":19,"value":376},"Gérer les cookies",{"type":19,"value":378},", en pied de page) : la mesure repasse alors à refusé.",{"type":14,"tag":15,"props":380,"children":381},{},[382],{"type":19,"value":383},"Les consentements publicitaires restent refusés : le site ne fait pas de ciblage publicitaire.",{"title":7,"searchDepth":385,"depth":385,"links":386},2,[387,388,389,390,391,392,393],{"id":24,"depth":385,"text":27},{"id":132,"depth":385,"text":135},{"id":176,"depth":385,"text":179},{"id":208,"depth":385,"text":211},{"id":269,"depth":385,"text":272},{"id":287,"depth":385,"text":290},{"id":310,"depth":385,"text":313},"markdown","content:docs:5.securite:3.audit-rgpd.md","content","docs\u002F5.securite\u002F3.audit-rgpd.md","docs\u002F5.securite\u002F3.audit-rgpd","md",[401],{"title":402,"_path":403,"children":404},"Docs","\u002Fdocs",[405,418,446,474,487,501,514,575],{"title":406,"_path":407,"children":408},"Démarrer","\u002Fdocs\u002Fdemarrer",[409,412,415],{"title":410,"_path":411},"Bienvenue","\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":413,"_path":414},"Créer un compte","\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":416,"_path":417},"Brancher une clé LLM","\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":419,"_path":420,"children":421},"Canaux","\u002Fdocs\u002Fcanaux",[422,425,428,431,434,437,440,443],{"title":423,"_path":424},"Vue d'ensemble des canaux","\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":426,"_path":427},"Téléphonie temps réel","\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":429,"_path":430},"Email","\u002Fdocs\u002Fcanaux\u002Femail",{"title":432,"_path":433},"Chat widget web","\u002Fdocs\u002Fcanaux\u002Fchat-widget",{"title":435,"_path":436},"Webhook HTTP","\u002Fdocs\u002Fcanaux\u002Fwebhook",{"title":438,"_path":439},"Messageries (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":441,"_path":442},"Meta Lead Ads","\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":444,"_path":445},"Planification (cron)","\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":447,"_path":448,"children":449},"Pipelines","\u002Fdocs\u002Fpipelines",[450,453,456,459,462,465,468,471],{"title":451,"_path":452},"L'éditeur visuel","\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":454,"_path":455},"Agents IA","\u002Fdocs\u002Fpipelines\u002Fagents",{"title":457,"_path":458},"Opérateurs déterministes","\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":460,"_path":461},"Contrôle de flux","\u002Fdocs\u002Fpipelines\u002Fcontrole-flux",{"title":463,"_path":464},"Étapes de code","\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":466,"_path":467},"Sous-pipelines","\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":469,"_path":470},"Actions sans code","\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":472,"_path":473},"Base de connaissances","\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",{"title":475,"_path":476,"children":477},"Supervision","\u002Fdocs\u002Fsupervision",[478,481,484],{"title":479,"_path":480},"Historique d'exécutions","\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":482,"_path":483},"Crédits & metering","\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":485,"_path":486},"Benchmarks","\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":488,"_path":489,"children":490},"Sécurité","\u002Fdocs\u002Fsecurite",[491,494,497,498],{"title":492,"_path":493},"Principes de sécurité","\u002Fdocs\u002Fsecurite\u002Fprincipes",{"title":495,"_path":496},"Multi-tenant strict","\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":8,"_path":4},{"title":499,"_path":500},"Déploiement souverain","\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":502,"_path":503,"children":504},"Développeurs","\u002Fdocs\u002Fdeveloppeurs",[505,508,511],{"title":506,"_path":507},"API admin","\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",{"title":509,"_path":510},"Webhooks sortants","\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":512,"_path":513},"Piloter betool depuis Claude (MCP)","\u002Fdocs\u002Fdeveloppeurs\u002Fmcp",{"title":515,"_path":516,"children":517},"Intégrations","\u002Fdocs\u002Fintegrations",[518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572],{"title":519,"_path":520},"Vue d'ensemble des intégrations","\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":522,"_path":523},"Stripe","\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":525,"_path":526},"GitHub","\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":528,"_path":529},"Google","\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":531,"_path":532},"LinkedIn Ads","\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":534,"_path":535},"Kavkom","\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":537,"_path":538},"Jira","\u002Fdocs\u002Fintegrations\u002Fjira",{"title":540,"_path":541},"Slack","\u002Fdocs\u002Fintegrations\u002Fslack",{"title":543,"_path":544},"SMS","\u002Fdocs\u002Fintegrations\u002Fsms",{"title":546,"_path":547},"Enable Banking (open banking)","\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":549,"_path":550},"CRM, marketing & productivité","\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":552,"_path":553},"HeyGen (vidéo)","\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":555,"_path":556},"La Poste","\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":558,"_path":559},"CRM métier (beTool Application, Qhare)","\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":561,"_path":562},"Mitti (inspections terrain)","\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":564,"_path":565},"Meta (Messenger, Pages, Meta Ads)","\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":567,"_path":568},"Onoff Business (Beta)","\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":570,"_path":571},"Smart Life \u002F Tuya (objets connectés)","\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":573,"_path":574},"Produits beTool (Desktop, Kiosk, Terminal)","\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":576,"_path":577,"children":578},"Cas d'usage","\u002Fdocs\u002Fcas-usage",[579,582,585,588,591,594],{"title":580,"_path":581},"Agents métier types","\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":583,"_path":584},"CFO IA","\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":586,"_path":587},"COO IA","\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":589,"_path":590},"CTO IA","\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":592,"_path":593},"Product Manager IA","\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":595,"_path":596},"Assistant personnel","\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]