DMV — Checklist de rotation des secrets
Date : 2026-06-07
Statut : checklist opérationnelle
Usage : préprod et production
1. Objectif
Cette checklist sert à gérer proprement un secret DMV :
- secret exposé dans un chat ;
- secret suspecté compromis ;
- rotation préventive planifiée ;
- changement de fournisseur ou d’environnement.
Elle doit être utilisée sans improvisation, avec une logique de continuité de service.
2. Règles obligatoires
- Ne jamais republier le secret compromis.
- Ne jamais commiter un secret réel.
- Ne jamais conserver un ancien secret “au cas où” au-delà de la fenêtre de transition prévue.
- Toujours documenter :
- quel secret a été tourné ;
- sur quels systèmes ;
- à quelle date ;
- par qui ;
- avec quel impact.
- Toujours vérifier la propagation avant révocation finale si une rotation sans coupure est possible.
3. Classification des secrets DMV
Niveau critique
SUPABASE_SERVICE_ROLE_KEYSUPABASE_DB_PASSWORDSUPABASE_JWT_SECRETAPP_KEYSTRIPE_SECRETSTRIPE_WEBHOOK_SECRETRESEND_API_KEYOPENAI_API_KEYou autre clé provider IA- secrets webhook entrants
Niveau important
SUPABASE_ANON_KEYNEXT_PUBLIC_*non sensibles mais structurants- tokens d’intégration tiers non critiques
Niveau opérationnel
- mots de passe IMAP/SMTP
- secrets Cloudflare Worker
- secrets cron / automation
4. Procédure standard
Étape 1 — Identifier
- Identifier précisément le secret concerné.
- Identifier son niveau de criticité.
- Identifier où il est utilisé :
api/.env*dmv-public/.env*dmv-workspace/.env*- Cloudflare Pages
- Cloudflare Workers
- Supabase Edge Functions
- VPS
- GitHub Actions / CI
- machine locale
Étape 2 — Cartographier l’impact
- Déterminer si le secret est utilisé :
- côté serveur uniquement ;
- côté frontend ;
- dans un Worker ;
- dans une Edge Function ;
- dans un webhook tiers.
- Déterminer si une rotation sans coupure est possible.
- Identifier les flux à tester après rotation.
Étape 3 — Générer le nouveau secret
- Générer un nouveau secret depuis le provider concerné.
- Vérifier immédiatement qu’il est stocké dans l’outil de secret management ou dans les variables d’environnement appropriées.
- Ne jamais le coller dans un fichier versionné.
Étape 4 — Déployer le nouveau secret
- Mettre à jour les variables sur tous les environnements concernés :
- préprod ;
- prod ;
- CI/CD ;
- workers ;
- edge functions ;
- cron VPS ;
- outils d’administration.
- Re-déployer uniquement les services concernés.
Étape 5 — Vérifier
- Vérifier les flux critiques impactés :
- auth ;
- API ;
- envoi email ;
- IA ;
- webhooks ;
- paiements ;
- workers ;
- edge functions.
- Vérifier aussi :
- logs d’erreur ;
- statuts HTTP ;
- timeouts ;
- permissions provider.
Étape 6 — Révoquer l’ancien secret
- Révoquer l’ancien secret chez le provider.
- Vérifier qu’aucun service ne dépend encore de l’ancien.
- Contrôler les erreurs post-révocation.
Étape 7 — Clôturer
- Documenter la rotation.
- Noter la cause :
- exposition accidentelle ;
- suspicion de fuite ;
- rotation périodique ;
- départ collaborateur ;
- incident infra.
- Ouvrir un correctif structurel si nécessaire.
5. Checklist exécutable
A. Constat
- Le secret concerné est identifié.
- Le niveau de criticité est évalué.
- L’exposition est confirmée ou suspectée.
B. Cartographie
- Les usages dans
apisont listés. - Les usages dans
dmv-publicsont listés. - Les usages dans
dmv-workspacesont listés. - Les usages Cloudflare sont listés.
- Les usages Supabase sont listés.
- Les usages VPS / cron / scripts sont listés.
- Les usages CI/CD sont listés.
C. Rotation
- Un nouveau secret valide a été généré.
- Le nouveau secret a été injecté en préprod.
- Le nouveau secret a été injecté en production si nécessaire.
- Les services concernés ont été redéployés.
D. Validation
- Les routes critiques répondent correctement.
- Les logs applicatifs ne montrent pas d’erreur d’auth.
- Les webhooks impactés répondent correctement.
- Les emails impactés partent correctement.
- Les providers externes impactés répondent correctement.
E. Révocation
- L’ancien secret a été révoqué.
- Aucun fallback caché vers l’ancien secret ne subsiste.
- Une vérification post-révocation a été faite.
F. Documentation
- La rotation a été notée dans le journal d’exploitation.
- La cause a été documentée.
- Un ticket structurel a été créé si la fuite venait d’un problème de process.
6. Vérifications spécifiques DMV
Supabase
- vérifier :
SUPABASE_URLSUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYSUPABASE_JWT_SECRET
- revalider :
- auth frontend ;
- échanges Sanctum ;
- Edge Functions ;
- RLS / accès API admin dépendants
Laravel API
- vérifier :
APP_KEY- secrets Supabase
- secrets Stripe
- secrets email
- secrets IA
- revalider :
- auth ;
- webhooks ;
- jobs ;
- endpoints critiques
Cloudflare
- vérifier :
- variables Pages ;
- variables Workers ;
- secrets webhook ;
- domaines / proxy si concernés
- revalider :
- redirects ;
- proxy workspace ;
- workers entrants
Email
- vérifier :
RESEND_API_KEY- identifiants IMAP/SMTP
- secrets inbound webhook
- revalider :
- contact équipe ;
- contact acteur ;
- réponse support ;
- réception des replies
IA
- vérifier :
- clés provider ;
- plafonds et quotas
- revalider :
- génération ;
- amélioration ;
- tags ;
- onboarding
7. Post-incident obligatoire
Après exposition d’un secret, il faut toujours se poser ces questions :
- Pourquoi le secret a-t-il pu être exposé ?
- Était-il trop accessible ?
- Était-il utilisé au mauvais endroit ?
- Était-il manipulé dans un outil non adapté ?
- Faut-il :
- réduire les accès humains ;
- ajouter de la détection de secrets ;
- revoir les prompts/outils ;
- revoir les procédures de debug ;
- sortir certains traitements du frontend/edge ?
8. Conditions minimales avant clôture
La rotation n’est considérée terminée que si :
- le nouveau secret est en place partout ;
- l’ancien est révoqué ;
- les flux critiques testés sont OK ;
- les logs ne montrent pas d’échec résiduel ;
- la documentation a été mise à jour.