Introduction
La gestion des secrets (mots de passe, tokens, clés) dans Kubernetes peut rapidement devenir complexe et sensible. External Secrets Operator (ESO) permet de synchroniser automatiquement des secrets stockés dans des vaults externes — HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, etc. — vers des Secret
Kubernetes, garantissant une rotation sécurisée et transparente.
Prérequis
- Un cluster Kubernetes (>=1.21)
kubectl
configuré- Store de secrets externe (HashiCorp Vault, AWS Secrets Manager…)
- Helm 3 (optionnel)
Installation de l’Operator
1. Ajouter le repo Helm
helm repo add external-secrets https://external-secrets.github.io/kubernetes-external-secrets/
helm repo update
2. Installer via Helm
helm install external-secrets external-secrets/kubernetes-external-secrets --namespace external-secrets --create-namespace
Configuration d’un SecretStore
Exemple pour HashiCorp Vault :
apiVersion: external-secrets.io/v1beta1
kind: SecretStore
metadata:
name: vault-secretstore
namespace: external-secrets
spec:
provider:
vault:
server: "https://vault.example.com"
path: "secret/data/k8s"
version: "v2"
auth:
token:
secretRef:
name: vault-token
key: token
kubectl apply -f secretstore.yaml
Le Secret
vault-token
contient le token d’accès :
apiVersion: v1
kind: Secret
metadata:
name: vault-token
namespace: external-secrets
type: Opaque
stringData:
token: <VAULT_TOKEN>
Déploiement d’un ExternalSecret
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: db-credentials
namespace: production
spec:
refreshInterval: "15m"
secretStoreRef:
name: vault-secretstore
kind: SecretStore
target:
name: prod-db-secret
creationPolicy: Owner
data:
- secretKey: username
remoteRef:
key: prod/db
property: username
- secretKey: password
remoteRef:
key: prod/db
property: password
kubectl apply -f externalsecret.yaml
Le Secret Kubernetes prod-db-secret
contient désormais username
et password
.
Bonnes pratiques
- Limiter les permissions du token Vault
- Externaliser la configuration dans Git (GitOps) pour auditabilité
- Surveiller le refresh (
refreshInterval
) et logs de l’Operator - Chiffrer les
Secret
Kubernetes au repos (Sealed Secrets, KMS) - Testez la rotation régulière des secrets
Conclusion
En automatisant la synchronisation des secrets externes dans Kubernetes avec External Secrets Operator, vous renforcez la sécurité, garantissez la rotation et simplifiez la gestion de vos credentials, tout en restant conforme aux meilleures pratiques DevSecOps.