Automatiser la gestion des secrets dans Kubernetes avec External Secrets Operator

Publié le 23 juillet 2025

Kubernetes
Sécurité

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

  1. Limiter les permissions du token Vault
  2. Externaliser la configuration dans Git (GitOps) pour auditabilité
  3. Surveiller le refresh (refreshInterval) et logs de l’Operator
  4. Chiffrer les Secret Kubernetes au repos (Sealed Secrets, KMS)
  5. 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.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets.

Contactez-nous

Articles similaires qui pourraient vous intéresser