Secrets : rotation et fuites
Un secret a un cycle de vie : création, usage, rotation, révocation.
Prérequis : cours 4.1 (secrets en 600) et 5.3 (contrat secrets) ; mots de passe et hash.
Pourquoi
Un secret a un cycle de vie : création, usage, rotation, révocation. La plupart gèrent les deux premiers et découvrent les deux derniers le jour de la fuite. Ce cours, c'est les deux derniers.
Concepts
- Inventaire vivant : secret | où il vit | qui y accède | comment le changer | dernière rotation. Sans ça, changer un mot de passe = expédition (« et si tel script l'utilisait ? »). Avec = 10 minutes.
- Rotation : générer le nouveau → déployer partout → vérifier → révoquer l'ancien → confirmer dans les logs. Déclencheurs : départ, suspicion, fuite, calendrier (1×/an les critiques).
SESSION_SECRET: rotation = déconnexion générale, zéro perte — prévoir le message. - Garde-fous anti-fuite :
gitleaks(scanner qui bloque tout commit contenant un secret),.gitignore(.envdedans, toujours), hook pre-commit (vérification locale avant chaque commit). Etgit filter-repopour purger l'historique — en sachant que face aux copies/forks, c'est cosmétique.
Exemple : protocole de fuite
- Révoquer d'abord : le commit restera public pour toujours.
- Chercher les autres occurrences (
.env.bak, screenshots, tickets avec le secret collé !). - Purger si utile, puis activer les 3 garde-fous s'ils manquaient.
Cas réel
Clé API collée dans un ticket « pour débugger », 6 mois ouverte, aspirée par un scraper : 400 € de data + rotation d'urgence un dimanche. Depuis : aucun secret hors coffre, même « juste pour débugger ».
Pièges
- « Je supprime le commit » : l'historique est indélébile (forks, caches, archives).
- Rotation partielle (nouveau déployé mais ancien pas révoqué) : deux secrets valides = deux fois le risque.
- Secret dans les logs « pour débugger » : les logs partent en backup — compromis d'avance.
À retenir
Inventaire vivant, rotation procédurée, fuite = révoquer d'abord, gitleaks en CI.
Pas de correction en ligneConfrontez votre code aux résultats attendus du cours.