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
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.
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
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…
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" !! 😥
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:
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 à:
# 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
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 – 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.
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…
C’est en dehors de la zone de confort que la magie opère
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 :
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 à:
CNCF landscape – Security & Compliance
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 😉
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 :
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 !