Environment Variable Security
devsecopsDéfinition
La sécurité des variables d'environnement (Environment Variable Security) couvre les pratiques permettant de protéger les informations sensibles transmises via les variables d'environnement aux applications et processus. Les variables d'environnement sont largement utilisées dans les architectures 12-factor apps pour séparer la configuration du code, mais leur gestion sécurisée requiert des précautions spécifiques pour éviter leur exposition accidentelle. Les variables d'environnement présentent plusieurs risques de sécurité. Elles peuvent être listées par des processus filleuls (env, /proc/{pid}/environ sous Linux), ce qui signifie qu'une commande exécutée dans le contexte de l'application peut exfiltrater toutes les variables d'environnement incluant les secrets. Elles peuvent apparaître dans les dumps de crash, les logs de debug, et les métadonnées de déploiement (kubectl describe pod, docker inspect) si elles ne sont pas filtrées. Des vulnérabilités applicatives comme les Server-Side Template Injections ou les RCE peuvent lire les variables d'environnement et les exfiltrer. Dans les conteneurs Docker et Kubernetes, les variables d'environnement présentent des risques spécifiques. Les Kubernetes Secrets stockant des données en Base64 (pas chiffrés par défaut dans etcd) peuvent être lus par quiconque a accès à l'API Kubernetes. Les variables d'environnement injectées via envFrom/env dans les specs de pods apparaissent en clair dans la spécification du pod (kubectl get pod -o yaml), visible à quiconque peut lire les pods dans le namespace. Les meilleures pratiques incluent : l'utilisation de secrets managers (Vault, AWS Secrets Manager, External Secrets Operator) plutôt que des variables d'environnement pour les secrets les plus sensibles, le chiffrement d'etcd pour les Kubernetes Secrets, les annotations sealed-secrets ou External Secrets pour les workflows GitOps, la configuration explicite des secrets comme "masked" dans les variables CI/CD (GitLab CI, GitHub Actions), et la limitation des permissions d'accès aux variables d'environnement dans les pods Kubernetes. L'injection de secrets au démarrage de l'application (via un init container récupérant les secrets depuis Vault) plutôt que comme variables d'environnement statiques est une pratique plus sécurisée : les secrets sont présents uniquement en mémoire de l'application, pas dans la configuration visible du pod.
Risques des variables d'environnement dans les conteneurs
Dans Kubernetes, les variables d'environnement définies dans les specs de pod apparaissent en clair dans kubectl get pod -o yaml et kubectl describe pod, visibles à tout utilisateur avec des droits de lecture sur les pods du namespace. Les logs de debugging peuvent imprimer toutes les variables d'environnement (env.dump() dans certains frameworks). Les vulnérabilités type SSRF ou RCE permettent souvent la lecture des variables d'environnement via /proc/self/environ. Ces risques justifient de traiter les variables d'environnement comme une couche intermédiaire, pas comme le stockage final des secrets.
Alternatives sécurisées aux variables d'environnement
Les alternatives plus sécurisées : 1) Vault Agent Sidecar : injecte les secrets depuis Vault directement dans des fichiers temporaires en mémoire (tmpfs), jamais exposés via l'API Kubernetes. 2) External Secrets Operator : synchronise les secrets depuis Vault/AWS/GCP vers des Kubernetes Secrets chiffrés dans etcd. 3) IRSA/Workload Identity : élimine les secrets statiques pour les accès cloud via des tokens éphémères. 4) Application-level fetching : l'application récupère ses secrets au démarrage depuis le vault, sans passer par les variables d'environnement du pod.
Chiffrement d'etcd et Kubernetes Secrets
Par défaut, les Kubernetes Secrets sont stockés en Base64 (encodage, pas chiffrement) dans etcd. L'activation de l'Encryption at Rest pour etcd (EncryptionConfiguration avec provider AES-GCM ou KMS) protège les secrets contre les accès non autorisés au niveau stockage. Les providers KMS (AWS KMS, GCP Cloud KMS, Azure Key Vault) externalisent la gestion des clés de chiffrement. Cette configuration est recommandée pour tout cluster Kubernetes gérant des secrets de production.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h