Gestion des Secrets
Ce fichier documente comment les secrets sont gérés dans le projet StageConnect.
Principe Fondamental
Aucun secret dans le code, jamais, même en commentaire. Le code doit pouvoir être ouvert publiquement sans risque.
Secrets du Projet
Les variables d'environnement suivantes sont utilisées dans le backend :
Authentification
| Variable | Description | État actuel |
|---|---|---|
SECRET_KEY | Clé de signature JWT | Partagé manuellement → migrer vers Passbolt |
ALGORITHM | Algorithme JWT (HS256) | Code (non sensible) |
ACCESS_TOKEN_EXPIRE_MINUTES | Durée access token (720 en local, 30 en prod) | Code (non sensible) |
Base de Données
| Variable | Description | État actuel |
|---|---|---|
DATABASE_URL | URL de connexion PostgreSQL | Partagé manuellement → migrer vers Passbolt |
DIRECT_URL | URL directe pour Alembic | Partagé manuellement → migrer vers Passbolt |
Supabase
| Variable | Description | État actuel |
|---|---|---|
SUPABASE_URL | URL du projet Supabase | Tableau de bord Supabase |
SUPABASE_ANON_KEY | Clé publique anon | Tableau de bord Supabase |
SUPABASE_SERVICE_ROLE_KEY | Clé privée admin | Partagé manuellement → migrer vers Passbolt |
Redis
| Variable | Description | État actuel |
|---|---|---|
REDIS_HOST | URL de connexion Redis | Partagé manuellement → migrer vers Passbolt |
REDIS_ENABLED | Activation Redis (true/false) | Code (non sensible) |
Cloudinary (Fichiers)
| Variable | Description | État actuel |
|---|---|---|
CLOUDINARY_CLOUD_NAME | Nom du cloud | Partagé manuellement → migrer vers Passbolt |
CLOUDINARY_API_KEY | Clé API | Partagé manuellement → migrer vers Passbolt |
CLOUDINARY_API_SECRET | Secret API | Partagé manuellement → migrer vers Passbolt |
Intégrations
| Variable | Description | État actuel |
|---|---|---|
CHUTES_API_KEY | Clé API pour recherche sémantique | Partagé manuellement → migrer vers Passbolt |
Configuration
| Variable | Description | État actuel |
|---|---|---|
BACKEND_CORS_ORIGINS | Origines autorisées (séparées par virgules) | Code (non sensible) |
DEBUG | Mode debug (true/false) | Code (non sensible) |
ENVIRONMENT | Environnement (development/production) | Code (non sensible) |
Monitoring
| Variable | Description | État actuel |
|---|---|---|
SIGNOZ_ENDPOINT | URL du serveur SigNoz pour les traces | Partagé manuellement → migrer vers Passbolt |
Stockage des Secrets
Locale (Développement)
Les secrets sont stockés dans un fichier .env à la racine du projet backend :
# Copier depuis .env.example et remplir avec les vraies valeurs
cp .env.example .env
Le fichier .env est dans .gitignore — il ne doit jamais être commité.
Production (Actuel)
Les secrets sont stockés dans :
- Vercel : Variables d'environnement pour les 3 frontends
- Dokploy : Variables d'environnement pour le backend
Passbolt (Cible)
Passbolt sera configuré pour stocker et partager les secrets de manière sécurisée.
Passbolt (Cible - Pas Encore Configuré)
Passbolt est le gestionnaire de mots de passe prévu pour l'équipe. Il sera auto-hébergé sur votre VPS.
Accès
- URL :
https://passbolt.votre-domaine.com - Connexion : Email + passphrase + clé PGP
Comment récupérer un secret
- Se connecter à Passbolt
- Rechercher le secret par nom (ex: "SUPABASE_SERVICE_ROLE_KEY")
- Copier la valeur
- Coller dans la variable d'environnement correspondante
Comment ajouter un nouveau secret
- Ajouter la variable dans
.env.exampleavec une valeur fictive - Ajouter le vrai secret dans Passbolt
- Configurer la variable dans Vercel/Dokploy
- Documenter dans ce fichier
Lacunes Actuelles
Gestion des secrets à améliorer
Nous n'avons pas encore de processus structuré pour la gestion des secrets.
Ce qui manque :
- ❌ Passbolt n'est pas encore configuré — les secrets sont partagés manuellement
- ❌ Pas de rotation automatique des secrets
- ❌ Pas de historique des accès aux secrets
- ❌ Pas de solution de staging — les tests se font en production
Plan pour Améliorer
-
Court terme :
- Configurer Passbolt sur le VPS
- Importer tous les secrets actuels
- Supprimer les partages manuels (Slack, etc.)
-
Moyen terme :
- Configurer la rotation des mots de passe
- Mettre en place l'audit des accès
- Former l'équipe à l'utilisation de Passbolt
Que Faire si un Secret est Exposé
- Immédiatement : Révoquer et régénérer le secret compromis
- Dans l'heure : Mettre à jour tous les endroits où le secret est utilisé
- Dans la journée : Investiguer comment le secret a été exposé
- Documenter : Créer un rapport d'incident dans
security/incidents/
Règles Absolues
- ❌ Jamais de secret dans le code source
- ❌ Jamais de secret dans les logs
- ❌ Jamais de secret dans les messages d'erreur
- ❌ Jamais de secret dans les screenshots ou partage d'écran
- ✅ Toujours utiliser les variables d'environnement
- ✅ Toujours passer par Passbolt pour les secrets partagés