gestion des secrets kubernetes avec hashicorp vault : guide technique avancé
12/09/2025
gestion des secrets kubernetes avec hashicorp vault
Dans un environnement Kubernetes, la gestion sécurisée des secrets devient vite critique pour protéger vos clés d’API, certificats et mots de passe. HashiCorp Vault, solution leader en secret management, s’intègre nativement à Kubernetes via un mécanisme d’authentification et d’injection automatique. Ce guide technique vous accompagne pas à pas pour déployer Vault, configurer l’authentification Kubernetes et consommer vos secrets depuis vos pods.
1. déployer hashicorp vault avec helm
- Ajouter le dépôt Helm officield e Vault :
helm repo add hashicorp https://helm.releases.hashicorp.com helm repo update
- Installer Vault en mode dev (pour tests) :
helm install vault hashicorp/vault --set "server.dev.enabled=true"
- Vérifier le status :
kubectl get pods -l app.kubernetes.io/name=vault
2. configurer l’authentification kubernetes
Pour qu’un pod s’authentifie auprès de Vault, il faut :
- Créer un rôle Kubernetes dans Vault.
- Donner au pod une ServiceAccount avec les droits d’accès.
a. activer le backend auth kubernetes
kubectl exec -it vault-0 -- vault auth enable kubernetes
b. fournir le token reviewer
VAULT_SA_NAME="vault-auth"
kubectl create serviceaccount $VAULT_SA_NAME
VAULT_SA_JWT=$(kubectl get secret $(kubectl get sa $VAULT_SA_NAME -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode)
VAULT_SA_CA_CERT=$(kubectl get configmap vault-ca -o jsonpath="{.data['ca\.crt']}")
c. configurer le rôle
vault write auth/kubernetes/config \
token_reviewer_jwt="$VAULT_SA_JWT" \
kubernetes_host="https://$KUBERNETES_HOST" \
kubernetes_ca_cert="$VAULT_SA_CA_CERT"
vault write auth/kubernetes/role/myapp \
bound_service_account_names="myapp-sa" \
bound_service_account_namespaces="default" \
policies="myapp-policy" \
ttl="24h"
3. injection et consommation des secrets
- Définir une policy pour votre application :
vault policy write myapp-policy - <
- Créer un secret :
vault kv put secret/data/myapp/config username=admin password="P@ssw0rd"
- Déployer votre pod avec l’annotation pour l’injection :
apiVersion: v1 kind: Pod metadata: name: myapp annotations: vault.hashicorp.com/agent-inject: "true" vault.hashicorp.com/role: "myapp" spec: serviceAccountName: myapp-sa containers: - name: app image: mycompany/app:latest volumeMounts: - name: vault-secrets mountPath: "/etc/secrets"
4. bonnes pratiques et optimisation
- Renouvellement automatique : configurez les agents Vault pour relancer le renouvellement des tokens avant expiration.
- NetworkPolicies : restreignez l’accès au service Vault uniquement aux namespaces et pods autorisés.
- Auditing : activez le logging d’audit pour tracer chaque requête Vault.
- Haute disponibilité : pour la production, passez en mode « HA » et utilisez un backend de stockage résilient (Consul, S3, etc.).
5. déployer et gérer à grande échelle avec terraform et ansible
Automatisez vos déploiements sur AWS EKS via Ansible et Terraform : écrivez un module Terraform pour créer le cluster, puis un playbook Ansible pour installer Helm, Vault et vos configurations.
conclusion
La combinaison Kubernetes + Vault offre un niveau de sécurité industriel pour la gestion des secrets : authentification fine, audit complet et renouvellement automatique. En suivant ce guide, vous limitez les risques de fuite de données sensibles et garantissez une infrastructure fiable et évolutive.
Prochaines étapes : testez ce setup dans un environnement stagging et n'hésitez pas à nous contacter pour un accompagnement sur mesure.