00 - Pourquoi ton .env finira par te trahir
Ce que tu vas apprendre
- Ce qu'est un secret (et pourquoi ce n'est pas juste un mot de passe)
- Pourquoi le fichier .env fonctionne jusqu'au jour ou il ne fonctionne plus
- Ce que cette serie couvre et dans quel ordre
Prerequisites
Aucun. C'est le point de depart de la serie.
Un fichier texte avec tous tes secrets dedans
Sur mon VPS chez OVH, le fichier .env de paltemps.fr ressemble a ca :
bashANTHROPIC_API_KEY=sk-ant-api03-xxx
OPENAI_API_KEY=sk-xxx
UNSPLASH_ACCESS_KEY=xxx
PEXELS_API_KEY=xxx
SMTP_USER=no-reply@paltemps.fr
SMTP_PASS=monmotdepasse
ADMIN_PASSWORD=admin123
WHITELISTED_IPS=1.2.3.4,5.6.7.8
Huit secrets dans un fichier texte brut. Pas de chiffrement, pas de contrôle d'acces, pas de trace de qui l'a lu. Ca fonctionne. Mon app Bun charge le .env au démarrage, Docker Compose l'injecte dans les conteneurs, et tout tourne.
Sauf que ce fichier est une bombe a retardement.
C'est quoi un secret, exactement ?
Un secret, c'est toute information qui, si elle fuit, cause un problème. Les API keys (Anthropic, OpenAI) permettent a quelqu'un de depenser ton argent. Les credentials SMTP permettent d'envoyer des mails en ton nom. Le mot de passe admin donne acces a tout. Les clés SSH permettent de se connecter a tes serveurs. Les certificats TLS authentifient ton domaine.
La liste est plus longue qu'on ne le pense. Tokens OAuth, clés de chiffrement, mots de passe de base de donnees, webhooks secrets... Un projet de taille moyenne en a facilement une vingtaine.
Le jour ou ca deraille
Le .env fonctionne tant que tu es seul, que tu n'as qu'un serveur, et que tu ne fais jamais d'erreur. En pratique, voici comment ca tourne mal.
Un git add . un peu trop rapide et ton .env se retrouve dans l'historique git. Meme si tu le supprimes au commit suivant, il reste dans l'historique. Selon le blog de GitHub, leur système de secret scanning détecté des milliers de secrets exposes chaque jour dans les repos publics. Des API keys valides, des mots de passe, des tokens. Des gens qui ont fait exactement la meme erreur.
Autre scénario : un nouveau dev rejoint le projet. Il a besoin du .env. Tu lui envoies comment ? Par Slack ? Par email ? Dans les deux cas, le secret transite en clair sur des serveurs que tu ne contrôles pas, et il reste dans l'historique du canal ou de la boîte mail.
Dernier cas : tu dois changer ta clé Anthropic (elle a ete compromise, ou tu veux juste la renouveler). Tu as 5 serveurs. Tu te connectes en SSH a chacun, tu edites le .env, tu redemarres le conteneur. Tu en oublies un. L'app plante a 3h du matin.
Les incidents ne sont pas theoriques
En 2023, un chercheur en sécurité a découvert que des employes de Samsung avaient colle du code source interne dans ChatGPT, y compris des secrets. Uber a subi une breche en 2022 parce qu'un attaquant a obtenu des credentials hardcodes dans un script PowerShell interne (source : Uber Security Update). CircleCI a du demander a tous ses utilisateurs de faire une rotation de leurs secrets apres une compromission de leur plateforme en janvier 2023 (CircleCI incident report).
Ce ne sont pas des petits projets. Si des entreprises avec des équipes sécurité dédiées se font pieger, ton .env sur un VPS OVH est un peu plus vulnerable qu'on aimerait le croire.
Ce que cette serie couvre
J'ai organise cette serie en 10 articles, du constat aux solutions concrètes :
- Cette introduction : tu y es
- Les 7 problèmes des secrets en .env : pourquoi le
.envne suffit pas, problème par problème - Les solutions : du .env au vault manager : l'échelle des solutions, de la plus simple a la plus robuste
- Google Secret Manager : guide pratique avec code TypeScript
- AWS Secrets Manager : setup, rotation automatique, comparaison cloud
- HashiCorp Vault : le vault self-hosted pour les équipes
- SOPS + age : chiffrer ses secrets dans git, ma solution préférée pour les petites équipes
- Secrets dans CI/CD : GitLab CI, GitHub Actions, les bonnes pratiques
- Rotation des secrets : comment renouveler sans casser
- Glossaire : tous les termes expliques
Si tu viens de la serie sur le chiffrement et les clés, tu as deja les bases crypto. Ici on passe a l'application concrète : comment protéger les secrets d'un vrai projet en production.
Si tu utilises deja GitLab CI pour déployer, l'article sur les secrets CI/CD va directement compléter ton setup.
On commence
Prochain article : on décomposé les 7 problèmes concrets du .env. Pas de la theorie abstraite sur la sécurité, mais les vrais scénarios qui finissent par arriver a tout le monde.
Navigation : Introduction | Suivant : 01 - Les 7 problèmes des secrets en .env
Sources
- Secret scanning alerts are now available for free on all public repositories par GitHub Blog
- Uber Security Update par Uber
- January 4, 2023 security incident report par CircleCI
Retrouve d'autres articles techniques sur paltemps.fr.