Aller au contenu principal

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​

VariableDescriptionÉtat actuel
SECRET_KEYClé de signature JWTPartagé manuellement → migrer vers Passbolt
ALGORITHMAlgorithme JWT (HS256)Code (non sensible)
ACCESS_TOKEN_EXPIRE_MINUTESDurée access token (720 en local, 30 en prod)Code (non sensible)

Base de Données​

VariableDescriptionÉtat actuel
DATABASE_URLURL de connexion PostgreSQLPartagé manuellement → migrer vers Passbolt
DIRECT_URLURL directe pour AlembicPartagé manuellement → migrer vers Passbolt

Supabase​

VariableDescriptionÉtat actuel
SUPABASE_URLURL du projet SupabaseTableau de bord Supabase
SUPABASE_ANON_KEYClé publique anonTableau de bord Supabase
SUPABASE_SERVICE_ROLE_KEYClé privée adminPartagé manuellement → migrer vers Passbolt

Redis​

VariableDescriptionÉtat actuel
REDIS_HOSTURL de connexion RedisPartagé manuellement → migrer vers Passbolt
REDIS_ENABLEDActivation Redis (true/false)Code (non sensible)

Cloudinary (Fichiers)​

VariableDescriptionÉtat actuel
CLOUDINARY_CLOUD_NAMENom du cloudPartagé manuellement → migrer vers Passbolt
CLOUDINARY_API_KEYClé APIPartagé manuellement → migrer vers Passbolt
CLOUDINARY_API_SECRETSecret APIPartagé manuellement → migrer vers Passbolt

Intégrations​

VariableDescriptionÉtat actuel
CHUTES_API_KEYClé API pour recherche sémantiquePartagé manuellement → migrer vers Passbolt

Configuration​

VariableDescriptionÉtat actuel
BACKEND_CORS_ORIGINSOrigines autorisées (séparées par virgules)Code (non sensible)
DEBUGMode debug (true/false)Code (non sensible)
ENVIRONMENTEnvironnement (development/production)Code (non sensible)

Monitoring​

VariableDescriptionÉtat actuel
SIGNOZ_ENDPOINTURL du serveur SigNoz pour les tracesPartagé 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​

  1. Se connecter à Passbolt
  2. Rechercher le secret par nom (ex: "SUPABASE_SERVICE_ROLE_KEY")
  3. Copier la valeur
  4. Coller dans la variable d'environnement correspondante

Comment ajouter un nouveau secret​

  1. Ajouter la variable dans .env.example avec une valeur fictive
  2. Ajouter le vrai secret dans Passbolt
  3. Configurer la variable dans Vercel/Dokploy
  4. 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​

  1. Court terme :

    • Configurer Passbolt sur le VPS
    • Importer tous les secrets actuels
    • Supprimer les partages manuels (Slack, etc.)
  2. 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é​

  1. Immédiatement : Révoquer et régénérer le secret compromis
  2. Dans l'heure : Mettre à jour tous les endroits où le secret est utilisé
  3. Dans la journée : Investiguer comment le secret a été exposé
  4. 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