Vault et Secrets
Chatbotaurus utilise HashiCorp Vault pour la gestion centralisee des secrets. Aucun secret n'est stocke en clair dans le code, les variables d'environnement ou les reponses API.
Architecture
Vault tourne dans le conteneur chatbotaurus-vault sur le port 8200, accessible uniquement depuis le reseau interne chatbotaurus-network.
Organisation des secrets
| Chemin Vault | Contenu |
|---|---|
secret/data/mcp-servers/{serverId} | Credentials des serveurs MCP |
secret/data/keycloak | Configuration SSO |
secret/data/database | Credentials PostgreSQL |
secret/data/ollama | Configuration modeles |
Integration avec les connecteurs
Chaque connecteur MCP recupere ses credentials depuis Vault au demarrage :
- Le connecteur demande ses credentials via
SecretsManager - SecretsManager interroge Vault
- Les credentials sont caches en memoire (TTL 5 min, LRU 500 entrees)
- Le connecteur utilise les credentials pour se connecter au service
Injection dans les conteneurs
Lors du deploiement one-click via le catalogue business :
ServerDeploymentServicedemande les secrets aSecretsManager- Les secrets sont injectes comme variables d'environnement dans
podman run - Les valeurs ne sont jamais exposees dans les reponses API
Rotation des secrets
- Rotation manuelle via l'API :
POST /api/v1/mcp/catalog-business/:id/secrets - Les credentials caches sont invalides automatiquement apres rotation
- Les connexions actives sont rafraichies au prochain appel
Bonnes pratiques
- Ne jamais stocker de secrets dans le code source
- Ne jamais logger les valeurs de secrets
- Utiliser des scopes minimaux pour chaque service
- Activer l'audit log Vault pour la tracabilite
Fichiers de reference
| Fichier | Contenu |
|---|---|
packages/server/src/services/mcp-gateway/SecretsManager.ts | Integration Vault |
docs/VAULT-CONFIGURATION.md | Configuration detaillee |
docs/KEY_CEREMONY_PROCEDURE.md | Procedure de ceremonie de cles |