Dans Kubernetes, la gestion des données sensibles comme les clés API, les identifiants de base de données et les certificats est cruciale. Bien que Kubernetes propose des Secrets pour stocker ces informations, ceux-ci sont encodés en base64 par défaut, ce qui les rend vulnérables si les contrôles d’accès ne sont pas correctement configurés. Sealed Secrets : sécurisation des données sensibles dans Kubernetes.
Le problème avec les secretes Kubernetes classiques :
Par défaut, Kubernetes stocke les Secrets sous forme de valeurs encodées en base64, et non sous forme de données chiffrées.
Cela signifie :
– Toute personne qui a accès au cluster (avec les bonnes permissions) peut lire les secrets en texte clair.
– Si vous stockez ces Secrets dans des dépôts Git, ils deviennent accessibles à toute personne ayant accès au dépôt.
– Leur protection nécessite des mesures de sécurité supplémentaires, comme des outils de gestion de secrets externes ou des stratégies de chiffrement personnalisées.
Sealed secrets : une alternative sécurisée
Sealed Secrets, est un outil open-source développé par Bitnami. Il offre un moyen sécurisé de gérer les Secrets Kubernetes en les chiffrant avant de les stocker dans Git ou d’autres systèmes de contrôle de version. Seul le cluster Kubernetes peut les déchiffrer et les utiliser.
Comment fonctionne Sealed Secrets ?
Le Sealed Secrets Controller s’exécute à l’intérieur du cluster Kubernetes et détient une clé de déchiffrement privée.
- Le développeur utilise l’outil en ligne de commande
kubeseal
pour chiffrer un secret et créer une ressource SealedSecret.
2. Il enregistre ensuite ce SealedSecret en toute sécurité dans un dépôt Git ou un autre système de gestion de code.
3. Lorsqu’il applique cette ressource au cluster, le Sealed Secrets Controller la déchiffre et la transforme en un Secret Kubernetes classique.

Traitement automatisé des Sealed Secrets avec ArgoCD et Kubernetes
ÉTAPES D’IMPLÉMENTATION :
Nous allons intégrer OpenTelemetry dans une application ASP.NET Core minimaliste.
1- Installer le Sealed Secrets Controller :
Le contrôleur fonctionne à l’intérieur du cluster Kubernetes et gère les clés de chiffrement.
kubectl apply -f https://github.com/bitnami-labs/sealedsecrets/releases/download/v0.20.0/controller.yaml
2- Installer l’outil Kubeseal CLI :
L’outil kubeseal chiffre localement les Secrets avant leur stockage dans
Git.
brew install kubeseal # MacOS sudo apt install kubeseal # Debian/Ubuntu
3- Créer un Secret Kubernetes :
kubectl create secret generic my-secret --from- literal=username=admin --from- literal=password=supersecurepass -n my-namespace
4- Chiffrer le Secret avec Kubeseal :
kubectl get secret my-secret -n my-namespace -o yaml | kubeseal -- controller-name=sealed-secrets -- controller-namespace=kube-system - -format=yaml > my-sealed-secret.yaml
5- Appliquer le SealedSecret au cluster :
Cela génère un fichier SealedSecret YAML, qui peut être commité en toute sécurité dans Git.
kubectl apply -f my-sealed-secret.yaml
Le Sealed Secrets Controller le déchiffre et crée un Secret
Kubernetes dans le cluster.
Pourquoi utiliser Sealed secrets ?
– Stockage sécurisé : Les secrets chiffrés peuvent être stockés en toute sécurité dans Git.
- – Déchiffrement lié au cluster : Seul le cluster peut déchiffrer les Sealed Secrets.
– Gestion automatisée des secrets : Compatible avec les workflows GitOps comme ArgoCD et FluxCD.
– Aucune dépendance externe : Contrairement à HashiCorp Vault ou AWS Secrets Manager, Sealed Secrets fonctionne entièrement dansKubernetes.
Conclusion
Sealed Secrets est une solution simple et efficace pour sécuriser la gestion des secrets Kubernetes tout en conservant les workflows GitOps. En l’intégrant à votre pipeline CI/CD, vous pouvez garantir que les données sensibles restent protégées sans complexifier votre infrastructure.
Pour plus de détails, consultez la documentation officielle :
https://github.com/bitnami-labs/sealed-secrets