Connecteurs cloud¶
Les connecteurs cloud permettent à un utilisateur (ou à une organisation) de synchroniser automatiquement un drive externe vers la collection ChromaDB de son périmètre — les fichiers indexés deviennent interrogeables en RAG.
Connecteurs disponibles par édition¶
| Connecteur | Souverain (air-gap) | Souverain-hybride |
|---|---|---|
| S3 / S3-compatible (MinIO interne) | ✅ | ✅ |
| WebDAV (Nextcloud interne) | ✅ | ✅ |
| Google Drive | ❌ | ✅ (service account GCP) |
| OneDrive / SharePoint | ❌ | ✅ (BYOC OAuth) |
| Dropbox | ❌ | ✅ (BYOC OAuth) |
| kDrive Infomaniak | ❌ | ✅ (API token) |
| Zotero | ❌ | ✅ (API key) |
| Notion | ❌ | ✅ (BYOC OAuth) |
En souverain pur, seuls S3 et WebDAV vers infra interne sont exposés — les boutons des autres connecteurs sont masqués et les routes correspondantes renvoient 404.
Google Drive — compte de service¶
Google Drive utilise un service account GCP (server-to-server). Modèle de partage :
- L'opérateur crée un service account dans son projet GCP (procédure complète : Installation souverain-hybride § Google Drive).
- Le JSON est collé dans
GOOGLE_SERVICE_ACCOUNT_CREDENTIALSdu.env. - Chaque utilisateur qui veut indexer un dossier le partage en
Lecteur avec l'email du service account, puis colle l'URL du
dossier dans
/user/cloud/gdrive/connect. - Le service account voit uniquement les dossiers partagés explicitement par les utilisateurs — pas le reste de leur Drive.
Propriétés de ce modèle :
- ✅ Indexation continue en arrière-plan sans renouvellement périodique de tokens (pas d'access token à refresh, pas de scope OAuth à renouveler côté utilisateur)
- ✅ Une seule app GCP pour toute la tenant (vs. une app par utilisateur ou par déploiement)
- ✅ Révocation granulaire : l'utilisateur retire le partage du dossier côté Drive UI, l'accès tombe instantanément côté Myeline
- ✅ Auditable côté GCP : tous les accès du service account apparaissent dans les Cloud Audit Logs du projet, traçables au fichier près
BYOC — Bring Your Own Credentials (OneDrive, Dropbox, Notion)¶
Pour les connecteurs OAuth restants, vous devez enregistrer vos propres apps OAuth chez Microsoft / Dropbox / Notion. Voir le walkthrough complet : Installation souverain-hybride § BYOC.
Pourquoi c'est obligatoire : le redirect URI OAuth pointe vers
https://<votre-domaine>/user/cloud/<provider>/callback. Les
providers vérifient ce redirect contre la whitelist de l'app qui
initie le flow — l'app OAuth de myeline.io ne peut pas servir vos
utilisateurs.
Fréquence de synchronisation¶
Cron check_cloud_sync (toutes les 4 heures), avec plancher par
licence (depuis app/cron/check_cloud_sync.py) :
| Tier | Intervalle minimum entre 2 syncs |
|---|---|
| Free | 24 h (1 fois par jour) |
| Pro | 1 h (configurable, jusqu'à toutes les heures) |
| On-premise / Souverain | Sur mesure (jusqu'à 15 min) |
Le owner peut déclencher une sync à la demande depuis
/user/cloud (limité à 1 fois/heure quel que soit le tier).
Stockage des credentials¶
- OAuth tokens (access + refresh) :
cloud_connections.token_encchiffré via Fernet (cléCLOUD_TOKEN_KEY). - API keys statiques (kDrive, Zotero, S3) : même mécanisme.
- Aucune clé n'apparaît dans les logs ni dans le journal d'audit.
Voir app/utils/crypto.py pour les détails d'implémentation.
Désactiver un connecteur globalement¶
Pour interdire un connecteur sur tout le déploiement (même en
souverain-hybride), ajouter à .env :
Liste séparée par virgule. Les boutons disparaissent, les routes renvoient 404, les syncs déjà en place sont gelées.