Aller au contenu principal

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 VaultContenu
secret/data/mcp-servers/{serverId}Credentials des serveurs MCP
secret/data/keycloakConfiguration SSO
secret/data/databaseCredentials PostgreSQL
secret/data/ollamaConfiguration modeles

Integration avec les connecteurs

Chaque connecteur MCP recupere ses credentials depuis Vault au demarrage :

  1. Le connecteur demande ses credentials via SecretsManager
  2. SecretsManager interroge Vault
  3. Les credentials sont caches en memoire (TTL 5 min, LRU 500 entrees)
  4. Le connecteur utilise les credentials pour se connecter au service

Injection dans les conteneurs

Lors du deploiement one-click via le catalogue business :

  1. ServerDeploymentService demande les secrets a SecretsManager
  2. Les secrets sont injectes comme variables d'environnement dans podman run
  3. 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

FichierContenu
packages/server/src/services/mcp-gateway/SecretsManager.tsIntegration Vault
docs/VAULT-CONFIGURATION.mdConfiguration detaillee
docs/KEY_CEREMONY_PROCEDURE.mdProcedure de ceremonie de cles