Les secrets Kubernetes sont à peu près aussi secrets que l'historique de votre navigateur. Ils sont stockés en texte clair, visibles par quiconque a accès au cluster, et ne parlons même pas du cauchemar du contrôle de version. Voici Sealed Secrets, le magicien du chiffrement qui va rendre vos données sensibles réellement... sensibles.
Pourquoi c'est important ?
- Chiffrez vos secrets avant qu'ils n'atteignent le contrôle de version
- Déchiffrez-les automatiquement dans votre cluster
- Dormez mieux la nuit en sachant que vos clés API ne circulent pas sur Internet
À la fin de cet article, vous scellerez des secrets comme un pro, impressionnerez vos collègues, et peut-être même obtiendrez cette promotion. (Bon, je ne peux pas promettre la promotion, mais vos secrets seront certainement plus sûrs.)
Sealed Secrets : L'histoire d'origine du super-héros
Les secrets Kubernetes, mais avec une cape et un masque. C'est essentiellement ce que sont les Sealed Secrets. Ce sont des secrets Kubernetes chiffrés gérés par le contrôleur Sealed Secrets. Pensez-y comme à votre garde du corps personnel pour les données sensibles.
Pourquoi les Sealed Secrets sont le Batman de Kubernetes :
- Ils peuvent séjourner en toute sécurité dans votre dépôt Git sans se dévoiler
- Seul votre cluster Kubernetes peut voir ce qu'il y a à l'intérieur
- Ils sont comme des secrets Kubernetes ordinaires, mais avec des super-pouvoirs
Installer le contrôleur Sealed Secrets : Votre nouveau meilleur ami
Avant de commencer à sceller des secrets comme s'il n'y avait pas de lendemain, nous devons installer le contrôleur Sealed Secrets.
Prérequis :
- Un cluster Kubernetes (si vous n'en avez pas, que faites-vous ici ?)
- kubectl configuré et prêt à l'emploi
Commençons la fête avec Helm :
# Ajouter le dépôt Sealed Secrets
helm repo add sealed-secrets https://bitnami-labs.github.io/sealed-secrets
# Mettre à jour vos dépôts
helm repo update
# Installer Sealed Secrets
helm install sealed-secrets sealed-secrets/sealed-secrets
Boom ! Votre cluster est maintenant équipé d'un super-pouvoir de scellement de secrets. Assurons-nous qu'il fonctionne :
kubectl get pods -n kube-system | grep sealed-secrets
Si vous voyez un pod en cours d'exécution, félicitez-vous. Vous êtes officiellement dans le business du scellement de secrets.
Créer et chiffrer un Sealed Secret : Espionnage 101
Maintenant que nous avons installé notre repaire secret, il est temps de commencer à créer des documents classifiés. Mais d'abord, nous avons besoin des bons outils.
Étape 1 : Installer kubeseal
kubeseal est votre acolyte de chiffrement. Installez-le comme ceci :
wget https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.18.1/kubeseal-linux-amd64 -O kubeseal
sudo install -m 755 kubeseal /usr/local/bin/kubeseal
Étape 2 : Créer un Secret
Créons un mot de passe de base de données ultra-secret :
apiVersion: v1
kind: Secret
metadata:
name: my-database-secret
type: Opaque
stringData:
DB_PASSWORD: "supersecretpassword123"
Enregistrez ceci sous secret.yaml
. Mais rappelez-vous, ce fichier est à peu près aussi sécurisé qu'un coffre en papier mâché.
Étape 3 : Scellez ce Secret !
Il est temps de mettre ce secret dans un coffre-fort :
kubeseal --format yaml < secret.yaml > sealed-secret.yaml
Voilà ! Vous avez maintenant un sealed-secret.yaml
que vous pouvez commettre à Git sans crainte. C'est comme si votre secret avait son propre costume d'Iron Man.
Déployer les Sealed Secrets : Mission Impossible
Maintenant que nous avons scellé notre secret, déployons-le dans notre cluster. C'est comme envoyer un document classifié à travers un territoire ennemi.
kubectl apply -f sealed-secret.yaml
Le contrôleur Sealed Secrets entre en action, déchiffre votre secret et crée un Secret Kubernetes ordinaire. Magique !
Pour vérifier, exécutez :
kubectl get secrets
Vous devriez voir votre secret déchiffré prêt à être utilisé par vos applications. Mission accomplie !
Gérer les Sealed Secrets à travers les environnements : Secret multiversel
Différents environnements, différents secrets. C'est comme avoir des identités secrètes séparées pour le travail et votre vie de super-héros.
Le multivers de la folie (ou juste vos différents environnements)
- Dev : Là où les erreurs se produisent, mais c'est correct
- Staging : La répétition générale pour vos secrets
- Production : Là où la magie opère (et où les erreurs ne sont définitivement pas acceptables)
Pour gérer cela, vous voudrez des clés de chiffrement différentes pour chaque environnement. Voici comment :
# Pour Dev
kubeseal --fetch-cert --controller-name=sealed-secrets-controller --controller-namespace=kube-system > dev-pub-cert.pem
# Pour Staging
kubeseal --fetch-cert --controller-name=sealed-secrets-controller --controller-namespace=kube-system > staging-pub-cert.pem
# Pour Production
kubeseal --fetch-cert --controller-name=sealed-secrets-controller --controller-namespace=kube-system > prod-pub-cert.pem
Maintenant, lors du scellement des secrets pour différents environnements :
# Pour Dev
kubeseal --format yaml --cert dev-pub-cert.pem < secret.yaml > dev-sealed-secret.yaml
# Pour Staging
kubeseal --format yaml --cert staging-pub-cert.pem < secret.yaml > staging-sealed-secret.yaml
# Pour Production
kubeseal --format yaml --cert prod-pub-cert.pem < secret.yaml > prod-sealed-secret.yaml
Chaque environnement obtient son propre secret chiffré de manière unique. C'est comme avoir une poignée de main secrète différente pour chacune de vos équipes de super-héros.
Rotation des secrets et des clés : Le cercle de la vie (secrète)
Même les super-héros doivent parfois changer de costume. Il en va de même pour vos secrets et vos clés de chiffrement.
Quand faire une rotation :
- Régulièrement, dans le cadre de vos meilleures pratiques de sécurité
- Lorsque vous suspectez une violation
- Quand Dave des opérations publie accidentellement les clés sur Slack (Classique Dave)
Comment faire une rotation d'un secret :
- Mettez à jour votre fichier YAML Secret original
- Re-scellez-le avec kubeseal
- Appliquez le nouveau Sealed Secret à votre cluster
Exemple : Rotation d'un mot de passe de base de données
apiVersion: v1
kind: Secret
metadata:
name: my-database-secret
type: Opaque
stringData:
DB_PASSWORD: "evenmoresecretpassword456"
kubeseal --format yaml < updated-secret.yaml > updated-sealed-secret.yaml
kubectl apply -f updated-sealed-secret.yaml
Vos applications utiliseront maintenant le nouveau mot de passe sans aucun temps d'arrêt. Opérateur en douceur !
Meilleures pratiques : Le code du super-héros
Voici les vôtres pour les Sealed Secrets :
- Ne commettez jamais, jamais de secrets en texte clair dans le contrôle de version (je vous regarde, stagiaire)
- Faites tourner vos clés de chiffrement régulièrement, comme vous faites tourner vos pneus (mais plus souvent)
- Utilisez RBAC pour contrôler qui peut chiffrer/déchiffrer les secrets (tout le monde n'a pas besoin d'être Nick Fury)
- Surveillez l'utilisation des secrets avec les journaux d'audit Kubernetes (faites confiance, mais vérifiez)
Outils et alternatives : Choisir votre super-pouvoir
Sealed Secrets n'est pas le seul héros en ville. Regardons quelques autres prétendants :
- HashiCorp Vault : Le couteau suisse de la gestion des secrets
- AWS Secrets Manager : Pour quand vous êtes à fond sur AWS
- Azure Key Vault : La réponse de Microsoft à "où mettre mes secrets ?"
Sealed Secrets brille par sa simplicité et son approche native de Kubernetes. Mais comme choisir entre Iron Man et Captain America, le meilleur outil dépend de vos besoins spécifiques.
Dépannage : Quand vos super-pouvoirs échouent
Même les super-héros ont des jours sans. Voici comment gérer les problèmes courants avec Sealed Secrets :
Le secret ne se déchiffre pas ?
kubectl get sealedsecrets
kubectl get events --field-selector involvedObject.kind=SealedSecret
Le contrôleur fait des siennes ?
kubectl logs deployment/sealed-secrets-controller -n kube-system
Clés non correspondantes ?
Assurez-vous d'utiliser la bonne clé publique pour le bon cluster. C'est comme s'assurer que vous êtes dans le bon univers avant d'essayer de soulever le marteau de Thor.
Conclusion : Avec un grand pouvoir vient un grand chiffrement
Sealed Secrets transforme le cauchemar de la gestion des secrets Kubernetes en un rêve. C'est sécurisé, c'est évolutif, et cela vous permet de dormir la nuit en sachant que vos secrets sont réellement secrets.
Rappelez-vous :
- Scellez vos secrets avant qu'ils ne touchent le contrôle de version
- Utilisez des clés différentes pour différents environnements
- Faites des rotations régulièrement
- Surveillez et auditez
Maintenant, allez sceller ces secrets ! Votre cluster (et votre tension artérielle) vous remercieront.
Pour plus d'informations, consultez la documentation officielle de Sealed Secrets. Et rappelez-vous, avec de grands secrets vient une grande responsabilité !