Défense
Gestion des secrets
Un secret est une donnée qui donne un accès : mot de passe, token, clé API, clé privée, chaîne de connexion ou certificat client. Une mauvaise gestion des secrets est une cause fréquente d'incidents.
Exemples de secrets
- mot de passe
- token d'API
- clé privée SSH
- clé privée TLS
- webhook secret
- chaîne de connexion base de données
- token CI/CD
- clé cloud longue durée
Un secret exposé doit être considéré comme compromis.
Mauvais emplacements
À éviter :
- code source
- dépôt Git
- image Docker publique
- logs applicatifs
- captures d'écran
- tickets support publics
- JavaScript côté client
- fichier partagé sans contrôle
Un fichier .env peut être pratique, mais il doit être protégé et exclu du dépôt.
Rotation
La rotation consiste à remplacer un secret par un nouveau.
Elle est nécessaire quand :
- le secret est exposé
- une personne quitte un périmètre
- un service change
- la politique interne l'exige
- le secret est trop ancien
La rotation doit être testée pour éviter les interruptions de service.
Secret manager
Un gestionnaire de secrets permet de stocker, distribuer et auditer les secrets.
Fonctions utiles :
- chiffrement au repos
- contrôle d'accès
- journalisation
- rotation
- versions
- séparation par environnement
Bonnes pratiques
- un secret par usage
- droits minimaux
- séparation dev, staging et production
- expiration quand c'est possible
- rotation documentée
- détection de secrets dans Git
- pas de secret dans les logs
- révocation immédiate en cas de fuite
Réaction à une fuite
- Révoquer le secret
- Générer un nouveau secret
- Déployer proprement
- Chercher les usages abusifs
- Nettoyer l'historique si nécessaire
- Documenter l'incident
- Corriger la cause
À retenir
Un secret doit être rare, limité, protégé, journalisé et révocable. Le stocker proprement est aussi important que le générer.
