Home >> Blog >> Kubernetes – retour d’expérience CKS

Kubernetes – retour d’expérience CKS

03 décembre 2021

By Sébastien Féré.

Il y a un peu plus d’un an, je partageais mon retour d’expérience et des astuces pour se préparer et passer la CKAD. Entre temps, mes collègues de SoKube et moi avons passé avec succès toute la série CK{AD,A,S} , ce qui fait aujourd’hui de SoKube une des rares à être certifiées KCSP (fournisseur de services pour Kubernetes) et KTP (formateur Kubernetes). Cela fait partie de notre ADN chez SoKube, d’aider les entreprises à entrer et maturer dans le monde des Conteneurs et Kubernetes et plus globalement dans tous l’écosystème Cloud-Native.

Certified Kubernetes Security specialist

Certified Kubernetes Security specialist

Une certification CNCF de plus?

Pas vraiment… La CKS reste un examen surveillé en ligne composé d’une quinzaine d’exercices ou problèmes à résoudre. La Toile référence de nombreux articles présentant le programme de certification et quelques astuces.

Pour ma part, je pensais en savoir déjà beaucoup sur Kubernetes avec tous les sujets couverts par la CKAD et la CKA. En préparant la CKS, j’ai vite compris qu’une nouvelle dimension s’ouvrait devant moi, qui au final, s’étend bien au-delà des frontières d’un cluster Kubernetes.

Si vous souhaitez des détails sur la procédure d’examen, l’expérience avec les exercices, et le fait d’être contraint par le temps, je vous suggère de lire mon premier article sur la CKAD. Dans cet article, j’ai décidé de mettre l’accent sur les changements depuis 2020 et les éléments importants et spécifiques à la CKS.

Qui plus est, toutes ces questions liées à l’examen en général devraient être familières car la CKA est un prérequis pour prétendre à la certification CKS.

Le tour de la CKS par la doc Kubernetes

Faire un copier-coller du programme de la CKS n’apporte pas beaucoup de valeur. Il est possible de le trouver facilement sur le site de la CNCF ou sur Github.

Je préfère largement mettre en exergue les sujet Sécurité de la documentation Kubernetes. La plupart de ces pages vous seront utiles pendant l’examen, à moins de mémoriser les mot-clés (ex: AppArmor, Ingress, Security Context, …) et de faire des recherches dans la documentation.

Cluster Setup & Networking

Container Runtime Security

Control-plane components

Kernel hardening

Kubernetes primitives

Policies & Security Context

Observability

Software Supply Chain

K-pax

Vous remarquerez peut-être quelques améliorations dans l’interface, mais c’est au niveau de la Console que cela devient intéressant 😃 Plus besoin d’apprendre par coeur les commandes pour activer l’alias "k" et la complétion. C’est désormais actif par défaut dans la session principale et dans tous les sessions SSH des noeuds control-plane et worker !

Il est toujours possible d’améliorer un peu l’expérience Shell, même si cela fait moins de sens pour la CKS ; il faut en effet souvent se connecter sur les noeuds Kubernetes.

# speed up imperative commands
export dy="--dry-run=client -o yaml"

# speed up pod termination
export now="--force --grace-period 0" 

Les commandes impératives avec kubectl (ou "k") restent toujours utiles, mais ce n’est clairement pas le coeur de la CKS…

Pas de salut sans sauvegarde…

En tant que spécialiste Sécurité, vous devrez être en mesure de détecter des comportements anormaux à l’intérieur des clusters Kubernetes, que ce soit des permissions trop souples ou bien des conteneurs douteux…

De ce fait, il vous sera demandé, et cela peut bien entendu arriver dans la vie courante, de supprimer certaines ressources. Qu’est-ce qui pourrait être pire que de supprimer le mauvais Pod sans aucune chance de récupérer sa configuration ? 😰

# backup a single resource configuration
k get po -n <ns> my-pod -o yaml > 13-pod.yaml

# backup several resources at once
k get deploy -n <ns> -o yaml > 8-deploy.yaml

Ces commandes permettront de vous sauver la mise, que ce soit lors d’une modification ou d’une suppression malencontreuse… à condition de ne pas oublier le "-o yaml" !! 😥

Roi de l’API server

La plupart des fonctionnalités et options de sécurité liés au Kube API server doivent être activées via les fichiers de configuration statique. Il est donc plus que recommandé d’être à l’aise avec l’API server et de pouvoir se sortir de n’importe quelle mauvaise situation:

  • configuration partielle (ex: Auditing activé sans les volumes / volumeMounts)
  • erreurs de configuration de toutes sortes
  • erreurs d’indentation dans des fichiers YAML de plus de 100 lignes

Il est plus que probable que vous ferez des erreurs de configuration au niveau de l’API server ou de la Kubelet. Il faut donc être prêt à:

  • ce que le process ou le pod kube-apiserver ne démarre pas,
  • identifier l’erreur et la cause,
  • la corriger rapidement
# check the API server is running
ps aux | grep api

# check the logs
tail -f /var/log/pods/...

Le pod kube-apiserver peut parfois mettre du temps à démarrer, le port de l’API server à donner une réponse, même si dans la plupart des cas c’est une affaire de quelques secondes…

Il peut aussi arriver que le Kube API server ne démarre pas automatiquement. Pour tous ces cas, il suffit de forcer son redémarrage:

# Option 1 - Move back... and forth
cd /etc/kubernetes/manifests
mv kube-apiserver.yaml ..
mv ../kube-apiserver.yaml .

# Option 2 - Restart the process
ps aux | grep api
kill -s HUP <pid>

# if no process spawns, then you need to double-check your changes
vi kube-apiserver.yaml

Mieux vaut tard que jamais

La procrastination… ce démon ! qui vous fera passer votre certification le jour-même de l’expiration de votre certification… 🤨

Vous n’êtes malheureusement pas le seul à vouloir passer la certification, et quelque soit la date d’examen choisie, il faut réaliser l’enregistrement plusieurs semaines à l’avance – 2 ou 3 semble une bonne approche – ce qui vous laissera le choix du moment de la journée où vous êtes au top de votre forme !

Et si vous n’êtes pas confiant de passer la CKS du premier coup, il faut clairement s’organiser à l’avance…

24 heures

24 heures – c’est le délai d’attente avant de recevoir ce charmant courrier électronique commençant par "Congratulations! You have successfully …".

Cela peut paraître long mais il s’agit d’une nette amélioration. Dites-vous qu’il y a quelques mois en arrière, il fallait compter plutôt 36 heures.

Mais pourquoi sortir de sa zone de confort ?!

Quel intérêt d’approfondir les capacités de Sécurité de Kubernetes ? Pourquoi passer ses soirées (et weekends) à apprendre et s’exercer avec des examens blancs alors qu’il est si facile de se relaxer devant la dernière série à la mode sur votre plateforme de streaming préférée ?! Pour obtenir un nouvelle médaille à accrocher à son profil LinkedIn ? Voici les raisons que j’ai identifiées…

Outside your comfort zone is where the magic happens

C’est en dehors de la zone de confort que la magie opère

Parce que la sécurité est primordiale

Comme indiqué dans le cours Kubernetes Security Essentials de la Linux Foundation, les cybercriminels ont l’avantage par rapport à l’équipe de Sécurité de l’Entreprise : les attaquants décident du :

  • quand – au beau milieu de la nuit
  • quoi – le plus vraisemblablement un service non ou mal sécurisé

Le combat est par ailleurs inégal… dans la plupart des entreprises, l’équipe Sécurité est sous-dimensionnée en comparaison des capacités de développement. Kubernetes offre un grand nombre de mesures de sécurité, allant de la prévention à la détection, qui vous aideront à:

  • appliquer le principe de moindre privilège (Least Privilege Principle)
  • limiter la surface d’attaque
  • mettre en oeuvre plusieurs lignes de défense (Defense in Depth)
  • partager les problématiques de Sécurité en utilisant le principe Shift-Left

CNCF landscape - Security & Compliance

CNCF landscape – Security & Compliance

Faire partie d’une communauté bien vivante !

L’année 2021 arrive à sa fin, et nous pouvons espérer lire le rapport annuel de la CNCF d’ici peu. Les chiffres du précédent rapport 2020 de la CNCF sont incroyables – plus de 55 000 inscriptions aux examens CKA et CKAD. Ainsi que le lancement de la certification CKS en Novembre 2020.

J’imagine que les chiffres pour 2021 seront encore plus surprenants ! Un peu de patience 😉

Je vis DevOps, je m’améliore en continu

Bien au-delà des considérations d’examen et de certification, j’ai vraiment découvert et appris beaucoup sur les éléments de sécurité d’un cluster Kubernetes, malgré tout ce dont j’avais déjà conscience. La CKS m’a permis d’étoffer ma boîte à outils DevSecOps pour répondre aux défis de sécurité dans l’écosystème des Conteneurs.

Il faut nuancer malgré tout le propos, la CKS ne fera pas de moi/vous un expert Sécurité aguerri. Cela ne remplacera pas les longues discussions et ateliers avec les équipes Réseau, Système et Sécurité !

Avec tous les sujets abordés dans le programme de la CKS, vous pourriez penser que vous avez toucher au but ?! En réalité, plusieurs sujets tout aussi importants n’ont pas été retenus, car ils ne sont pas liés directement à Kubernetes :

  • Segmentation et micro-segmentation réseau
  • Topologie de clusters Kubernetes
  • Gestion des secrets à l’échelle d’une Entreprise
  • Pipelines de CI/CD sécurisés

Conclusion

Sur la base de notre expérience chez SoKube, je dirais que les problématiques de sécurité sont réparties de manière équitable entre la Software Supply Chain et l’infrastructure Kubernetes.

Il est communément admis qu’il faut trouver un compromis entre le côté pratique et la sécurité. Cela me semble de moins en moins vrai. La sécurité dite traditionnelle était l’apanage de quelques experts. Les outils de sécurité dans un contexte Cloud-Native sont bien plus abordables, et le niveau de sécurité peut être amélioré par tous.

La sécurité doit clairement faire partie intégrante de votre Infrastructure de Conteneurs et de votre chaîne d’approvisionnement logiciel. Il faut garder à l’esprit que si la Sécurité des Conteneurs n’est pas mise en oeuvre dès le départ, la dette technique va s’accumuler… et il se pourrait qu’un jour vous deviez la solder en Bitcoins !

  Edit this page