Coffres mdp, 2FA, comptes nominatifs, rotation tokens, SSO/OAuth scopes, .env, leak detection. Et les anti-patterns qu'on a tous fait.
Aucune raison valable en 2026 de ne pas utiliser un gestionnaire de mots de passe. Coût : 3-5 €/mois. Bénéfice : élimination de 80 % des risques de compromission.
| Outil | Prix | Avantages | Inconvénients |
|---|---|---|---|
| Dashlane | 3-5 €/mois | UI propre, dark web monitoring, password health, VPN inclus | Pas auto-hébergeable |
| 1Password | 3-5 €/mois | Référence pour les pros, partage équipe propre, intégrations CLI | Pas auto-hébergeable |
| Bitwarden | Gratuit / 10 €/an | Open-source, auto-hébergeable (Vaultwarden), apps complètes | UI moins polie |
| KeePass / KeePassXC | Gratuit | Local-first, total contrôle, OSS | Sync à gérer soi-même (Dropbox/Drive) |
Si vous voyez un collègue noter un mot de passe sur post-it ou l'envoyer sur Slack/Teams en clair, c'est rouge. Reformez immédiatement.
Le 2FA (authentification à deux facteurs) ajoute une preuve de possession en plus du savoir (mot de passe). Même si un attaquant a votre password, sans le 2e facteur il n'entre pas.
| Méthode | Sécurité | Remarque |
|---|---|---|
| SMS | ⭐ (faible) | Vulnérable au SIM swap, OK en dernier recours mais à éviter |
| ⭐ (faible) | Si l'email est compromis, le 2FA aussi → cercle vicieux | |
| TOTP (Google Auth, Authy, 1Password) | ⭐⭐⭐ | Standard, ok pour 95 % des cas |
| Push notif (Microsoft Auth, Duo) | ⭐⭐⭐ | Pratique mais vulnérable au MFA fatigue (spammer jusqu'à ce qu'on accepte) |
| Yubikey / clé FIDO2 | ⭐⭐⭐⭐⭐ | Le top, résistant phishing. ~50€/clé, en avoir 2 (perte/casse) |
Tous les services 2FA fournissent 8-12 codes de secours à usage unique. Stockez-les dans votre coffre. Si vous perdez votre téléphone, ces codes sont votre seul moyen de récupérer.
Aucun compte technique partagé entre humains. Chaque personne a son compte avec son email pro et son 2FA.
Vous donnez à un prestataire externe (dev WordPress, agence SEO, freelance) l'accès via un compte webmaster@votre-domaine.com partagé avec vous. Cas vécu Ezway/SoftIAM (cf. mémoire).
Problèmes :
Solution propre : créer un compte presta-acme@votre-domaine.com nominatif pour ce prestataire, avec 2FA obligatoire et permissions limitées. Désactivation immédiate à la fin de la mission.
À partir de 10-20 users, manager les comptes individuels devient lourd. Le Single Sign-On centralise l'auth : un seul login (Google Workspace / Microsoft Entra / Okta) qui donne accès à toutes les apps.
Quand vous générez un token API (Zoho, Google, GitHub, Stripe…), vous choisissez un scope. Ne donnez QUE ce qui est strictement nécessaire.
# Anti-pattern : token Zoho avec full access
ZohoCRM.modules.ALL,ZohoCRM.settings.ALL,ZohoCRM.users.ALL
# Bon pattern : juste ce qu'il faut pour la fonction
ZohoCRM.modules.leads.READ
ZohoCRM.modules.deals.READ
# Si compromission : limites les dégâts à READ leads/deals
De pire à mieux pour stocker un secret nécessaire à une app :
config.json commité — pareil que ci-dessus.env gitignored — mieux, mais à protéger : chmod 600, ne JAMAIS commit, attention aux backups# .gitignore — TOUJOURS
.env
.env.local
.env.production
*.env
# .env.example — committé, sans valeurs réelles
DATABASE_URL=postgresql://user:password@localhost:5432/db
MAILJET_API_KEY=
MAILJET_API_SECRET=
STRIPE_SECRET_KEY=
# .env (réel, non committé)
DATABASE_URL=postgresql://user:VRAI_PASS@db.example.com:5432/prod
MAILJET_API_KEY=abc...
MAILJET_API_SECRET=def...
STRIPE_SECRET_KEY=sk_live_xxx
# Le fichier .env ne doit être lisible QUE par son propriétaire
chmod 600 .env
ls -l .env
# -rw------- 1 francois francois 234 May 20 12:00 .env
Si vous backupez naïvement /home/user/app/ vers un Drive, vous backupez aussi .env en clair. Soit excluez les .env du backup (et backupez-les séparément, chiffrés), soit chiffrez le backup entier (cf. module 4).
Tôt ou tard, quelqu'un commit un secret par accident (git add . && git commit -m "wip" avec un .env oublié). Les outils de leak detection scannent vos repos pour les détecter.
docker run --rm -v "$PWD:/repo" trufflesecurity/trufflehog:latest git file:///repo
# Installer
brew install gitleaks # macOS
# ou : curl -sSfL https://raw.githubusercontent.com/gitleaks/gitleaks/master/install.sh | sh
# Hook pre-commit : empêche tout commit contenant un secret détecté
cat > .git/hooks/pre-commit << 'EOF'
#!/bin/sh
gitleaks protect --staged --verbose --no-banner
EOF
chmod +x .git/hooks/pre-commit
Activez GitHub Secret Scanning sur tous vos repos (gratuit sur les repos publics, payant sur les privés via GitHub Advanced Security). Détecte automatiquement les leak de tokens connus (AWS, Stripe, GitHub, etc.) et alerte instantanément.
Vous découvrez qu'un token Stripe est dans l'historique git d'un repo. Réécrire l'historique ne suffit pas — quelqu'un a peut-être déjà cloné. La SEULE bonne réaction : révoquer le token immédiatement côté Stripe, en générer un nouveau, l'injecter via vault, et faire un post-mortem (comment c'est arrivé, comment éviter).
Même sans incident, les secrets doivent être rotatés régulièrement. Plus la rotation est fréquente, moins une compromission silencieuse a d'impact.
| Secret | Rotation |
|---|---|
| Master password coffre | 1× par an + après tout incident |
| Clés SSH dev | 1× par an + à chaque départ d'équipe |
| Tokens API SaaS (Stripe, Zoho, Mailjet) | 6-12 mois |
| Database passwords | 6 mois |
| Certificats TLS | Auto (Let's Encrypt = tous les 60-90 jours) |
| JWT signing secret app | 6 mois |
Un vault rend la rotation indolore : changez la valeur centralement, les services reprennent automatiquement. Sans vault, vous devez redéployer chaque app après chaque rotation — d'où la tentation de ne jamais rotater.