veilletech.fr
29 août Feed du jour
#09 DEVOPS Article

Kubernetes : des certificats X.509 pour vos pods

Le jeton porteur donne votre identité ; le certificat n'en prête que la preuve.

Kubernetes 1.37 fait passer en GA les Pod Certificates et les Cluster Trust Bundles : l'émission de certificats X.509 pour TLS et mTLS entre dans le cœur du projet. La clé privée est générée par le kubelet et ne quitte pas le nœud, ce qui remplace un jeton porteur par une preuve de possession.

3 min de lecturevidéo 1:20
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Pourquoi ça compte
  3. Comment ça marche
  4. Ce qu'il faut savoir avant d'y aller
  5. À retenir

Ce qui se passe

L'identité de production d'une charge de travail Kubernetes reposait jusqu'ici sur le jeton JWT de compte de service : monté par le kubelet avant le démarrage du conteneur, tenu à jour tout seul, limité par le node restriction admission plugin, et fédérable auprès de tous les grands fournisseurs de cloud.

Avec Kubernetes 1.37, les Pod Certificates et les Cluster Trust Bundles passent en disponibilité générale : l'émission de certificats X.509 pour TLS et mTLS entre dans le cœur du projet.

Pourquoi ça compte

Le jeton de compte de service a un défaut que ses garde-fous n'effacent pas : c'est un jeton porteur. Qui le détient est l'identité qu'il porte — et comme il faut en donner une copie à chaque pair pour s'authentifier auprès de lui, chaque pair peut aussi devenir vous. Le bornage dans le temps, par objet et par audience atténue le risque sans le supprimer.

Un certificat X.509 relève d'une autre famille, celle des preuves de possession : la clé privée reste chez la charge de travail, seule la preuve qu'on la détient circule.

Comment ça marche

Contrôleursignatairekube-apiserverKubeletPod (volumeprojeté)Contrôleursignatairekube-apiserverKubeletPod (volumeprojeté)à beginRefreshAt, le cyclerecommencegénère la cléprivée (keyType),elle ne sort pas dunœudPodCertificateRequestadressée au signatairedécide, puis remplitstatus.certificateChainfixe status.beginRefreshAt(quand renouveler)écrit clé + chaîne dans lesystème de fichiersClusterTrustBundles filtréspar signataire et labelsécrit les ancres de confiance,réordonnées de façon stable

Deux nouvelles sources de volume projeté suffisent à câbler tout cela : podCertificate pour l'identité, clusterTrustBundle pour les ancres de confiance. Le réordonnancement stable des ancres est délibéré : il empêche une application de dépendre par accident d'un ordre particulier.

Ce qu'il faut savoir avant d'y aller

Source : Kubernetes Blog, Kubernetes v1.37: Pod Certificates and Cluster Trust Bundles