Aller au contenu principal

Securite

Chatbotaurus applique une politique de securite zero-trust avec chiffrement de bout en bout, gestion centralisee des secrets et authentification SSO.

Gestion des secrets avec Vault

Tous les secrets (cles API, mots de passe, tokens) sont stockes dans HashiCorp Vault. Aucun secret n'est jamais stocke en clair dans les fichiers de configuration ou les variables d'environnement en production.

Chemin des secrets

secret/data/mcp-servers/{serverId}    # Secrets par serveur MCP
secret/data/credentials/{workspaceId} # Credentials par workspace
secret/data/oauth/{provider} # Tokens OAuth

Injection dans les conteneurs

Les secrets sont injectes au demarrage des conteneurs via Vault Agent :

podman run --network mgaas-network \
--env ODOO_API_KEY=$(vault kv get -field=api_key secret/data/mcp-servers/odoo) \
mcp-odoo-eu

Rotation des secrets

Les secrets sont automatiquement renouveles selon leur type :

  • Tokens OAuth : toutes les 24h
  • Cles API : tous les 90 jours
  • Certificats TLS : 30 jours avant expiration

Authentification SSO (Keycloak)

Chatbotaurus utilise Keycloak comme fournisseur d'identite central.

Configuration

Le serveur Keycloak est accessible sur le port 8180 :

URL : https://auth.staging.chatbotaurus.eu
Realm : chatbotaurus
Client ID : chatbotaurus-app

Fonctionnalites

  • SSO (Single Sign-On) pour tous les services
  • Support OIDC et SAML 2.0
  • 2FA/TOTP obligatoire pour les administrateurs
  • Federation d'identite (LDAP, Active Directory)
  • Politique de mots de passe configurable

Integration frontend

Le frontend Next.js utilise le flow Authorization Code avec PKCE :

// Configuration Keycloak dans le frontend
const keycloakConfig = {
url: process.env.NEXT_PUBLIC_KEYCLOAK_URL,
realm: 'chatbotaurus',
clientId: 'chatbotaurus-app',
};

Chiffrement

En transit

Toutes les communications utilisent TLS 1.3 via Traefik :

  • Frontend vers Backend : HTTPS
  • Backend vers Services MCP : HTTPS
  • Backend vers Bases de donnees : TLS

Au repos

  • PostgreSQL : chiffrement transparent (TDE)
  • Qdrant : chiffrement des vecteurs
  • Valkey : chiffrement des donnees en cache
  • Vault : chiffrement AES-256-GCM

Scan de securite (Trivy)

Chaque image conteneur est scannee avant deploiement :

.\scripts\scan-images-trivy.ps1 -SeverityThreshold HIGH

Les vulnerabilites CRITICAL bloquent le deploiement. Un SBOM (Software Bill of Materials) au format SPDX est genere pour chaque image.

Bonnes pratiques

  • Ne jamais exposer Vault, PostgreSQL ou Qdrant sur l'internet public
  • Utiliser des reseaux Podman separes (chatbotaurus-network pour le core, mgaas-network pour les services metier)
  • Activer les logs d'audit Keycloak pour tracer les connexions
  • Verifier regulierement les CVE avec Trivy
  • Appliquer le principe du moindre privilege pour les tokens Vault