02 - Les solutions : du .env au vault manager
Ce que tu vas apprendre
- Les 6 niveaux de gestion des secrets, du plus simple au plus robuste
- Quand utiliser chaque solution selon ton contexte
- Mon avis sur ce qui convient a quel type de projet
Prerequisites
Avoir lu l'article sur les 7 problèmes du .env.
L'échelle des solutions
Il n'existe pas une seule bonne réponse a la gestion des secrets. Ca depend de la taille de ton équipe, du nombre de serveurs, de ton budget, et de ta tolérance au risque. Voici les solutions classees par ordre de complexité croissante.
Niveau 1 : .env + .gitignore
C'est ce que fait tout le monde au début, et c'est ce que je fais sur paltemps.fr. Un fichier .env a la racine du projet, un .gitignore qui l'exclut du repo.
bash# .gitignore
.env
.env.local
.env.production
Ca resout un seul problème : le secret ne finit pas dans git (si tu n'oublies pas le .gitignore). Tous les autres problèmes identifies dans l'article précédent restent presents. Pas de chiffrement, pas d'audit, pas de rotation.
Quand c'est suffisant : projet perso, un seul dev, un seul serveur, secrets peu sensibles. Si ta clé API la plus coûteuse te coûte 5 euros/mois en cas de fuite, le .env fait le job.
Niveau 2 : .env chiffre avec SOPS ou age
L'idee : tu gardes ton .env, mais tu le chiffres avant de le committer. Seuls ceux qui ont la clé de dechiffrement peuvent le lire. L'outil de référencé, c'est SOPS (développé a l'origine par Mozilla) combine avec age pour le chiffrement.
bash# Chiffrer
sops --encrypt --age age1xxx... .env > .env.enc
# Dechiffrer
sops --decrypt .env.enc > .env
Tu commites .env.enc dans git. Le fichier en clair reste dans .gitignore. En CI/CD, tu stockes la clé privee age comme variable protégée, et le pipeline dechiffre au moment du déploiement.
Ca resout : le partage (tout le monde a le fichier chiffre dans git), le versioning (git track les changements du fichier chiffre), et partiellement le chiffrement au repos. Ca ne resout pas le contrôle d'acces fin ni l'audit.
J'y consacre un article complet plus loin dans la serie. C'est ma solution préférée pour les petites équipes.
Niveau 3 : variables CI/CD
GitLab CI/CD Variables, GitHub Actions Secrets, les variables d'environnement de CircleCI. Les secrets vivent dans l'interface de ton outil de CI, pas dans un fichier.
yaml# .gitlab-ci.yml
deploy:
script:
- echo "$DOTENV" > .env
- docker compose up -d --build
variables:
GIT_STRATEGY: clone
La variable $DOTENV contient tout le .env et elle est stockee dans GitLab, protégée et masquee dans les logs. C'est ce que j'utilise en complement du .env sur paltemps.fr, avec un pipeline GitLab CI.
Ca resout : le partage (pas besoin d'envoyer le .env par Slack), le chiffrement (les secrets sont stockes chiffres par la plateforme), et partiellement l'audit (tu vois qui a modifie les variables CI). Ca ne resout pas la rotation automatique ni le contrôle d'acces fin par secret.
Quand c'est suffisant : équipe de 1 a 5 devs, déploiement automatise, un ou deux environnements.
Niveau 4 : vault cloud manage
Google Secret Manager, AWS Secrets Manager, Azure Key Vault. Les secrets vivent dans un service cloud dédié, accessible par API.
bash# Google Secret Manager
gcloud secrets create ANTHROPIC_KEY --data-file=- <<< "sk-ant-xxx"
gcloud secrets versions access latest --secret=ANTHROPIC_KEY
# AWS Secrets Manager
aws secretsmanager create-secret --name ANTHROPIC_KEY --secret-string "sk-ant-xxx"
aws secretsmanager get-secret-value --secret-id ANTHROPIC_KEY
Ca resout presque tout : chiffrement, contrôle d'acces par IAM, audit trail complet, versioning, rotation automatique possible. Le coût est faible (quelques centimes par mois pour un usage normal).
Le problème : tu es lie a un cloud provider. Si ton VPS est chez OVH et que tu n'utilises pas GCP ou AWS, tu dois quand meme créer un compte, configurer IAM, gerer un service account. C'est faisable mais c'est une dépendance supplementaire.
Articles dédiés : Google Secret Manager et AWS Secrets Manager.
Niveau 5 : HashiCorp Vault
Le vault open source, self-hosted, avec tout : secrets statiques, secrets dynamiques (credentials de base de donnees générés a la volee), chiffrement as a service, PKI, et un système de politiques d'acces granulaire.
bashvault kv put secret/paltemps ANTHROPIC_KEY=sk-ant-xxx SMTP_PASS=xxx
vault kv get -field=ANTHROPIC_KEY secret/paltemps
Vault est la solution la plus complète. C'est aussi la plus complexe a opérer. Il faut le déployer, le maintenir, gerer l'unseal, les backups, les upgrades. En mode production, il faut un cluster de 3 ou 5 noeuds pour la haute disponibilité.
Mon avis : ne deploie pas Vault si tu n'as pas au moins une personne dédiée a l'infrastructure. C'est un outil d'équipe, pas un outil de solo dev. Article dédié : HashiCorp Vault.
Niveau 6 : Doppler, Infisical et les SaaS
Doppler et Infisical sont des alternatives SaaS au vault self-hosted. Tu geres tes secrets dans une interface web, tu les injectes dans tes apps via CLI ou SDK. Infisical est open source et peut etre self-hosted.
bash# Doppler
doppler secrets set ANTHROPIC_KEY=sk-ant-xxx
doppler run -- docker compose up -d
# Infisical
infisical secrets set ANTHROPIC_KEY sk-ant-xxx
infisical run -- docker compose up -d
Le gros avantage : la simplicité. Pas de cluster a gerer, pas de IAM cloud a configurer. Tu créés un compte, tu importes tes secrets, tu intégrés le CLI dans ton pipeline. En 15 minutes c'est fait.
Le compromis : tes secrets sont chez un tiers. Si le service tombe (ou ferme), tu dois migrer. Et le tier gratuit a des limites.
Quelle solution pour toi ?
Voici mon avis, pas une vérité universelle :
Solo dev, un VPS, budget zero : .env + .gitignore + variables CI/CD GitLab. C'est ce que je fais sur paltemps.fr. Ca couvre 80% des besoins.
Petite équipe (2-5 devs), un ou deux serveurs : SOPS + age pour les fichiers de config, variables CI/CD pour le déploiement. Le meilleur ratio sécurité/effort.
Équipe de 5-15, multi-environnements : un vault cloud (Google Secret Manager ou AWS Secrets Manager selon ton provider). Le coût est negligeable et tu gagnes l'audit, la rotation, le contrôle d'acces.
Équipe de 15+, compliance, infra complexe : HashiCorp Vault ou un SaaS comme Infisical. A cette échelle, le coût d'opération de Vault est justifie par les fonctionnalités (secrets dynamiques, PKI).
La suite de cette serie détaillé chaque solution avec des guides pratiques. Commence par celle qui correspond a ton contexte.
Navigation : Precedent : 01 - Les 7 problèmes | Suivant : 03 - Google Secret Manager
Sources
- SOPS: Secrets OPerationS par CNCF
- age: a simple, modern and secure encryption tool par Filippo Valsorda
- OWASP Secrets Management Cheat Sheet par OWASP
- Doppler - Universal Secrets Manager par Doppler
Retrouve d'autres articles techniques sur paltemps.fr.