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-networkpour le core,mgaas-networkpour 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