À #devoxx!

Et on va commencer par un talk de @tiffanyfay sur le #RBAC dans #Kubernetes, en anglais.

Je suis assez curieux de voir combien de gens vont venir écouter un talk en anglais !

(En tout cas si vous voulez un "quickstart" sur les permissions dans K8S, c'est THE occasion, ou comme on dit ici LE occasion :D )

Du coup je vais peut être tenter des bouts de #LiveToot en français, on va voir

Les points principaux :

(1) minimiser les permissions qu'on donne (mieux vaut du grain fin que du cluster-admin en masse)

(2) minimiser *combien de temps* les permissions sont valables, en utilisant des secrets qui ont une courte durée de vie (je pense que ça va parler de bound tokens)

(3) minimiser la quantité de code, les dépendances...

→ en sécu, "less is more"

#LiveToot #Devoxx #Kubernetes #Security

Ensuite Tiffany couvre la sécurité du control plane et des nodes :

(1) éviter "--insecure-skip-tls-verify" (bon j'espère que tout le monde s'en doutait vu que le flag commence par --insecure! Hein? :))

(2) attention, si vous n'utilisez pas les PSS (Pod Security Settings) c'est très facile pour un·e vilain·e dev de passer root sur tout le cluster (avec par exemple http://bit.ly/hacktheplanetyaml)

#LiveToot #Devoxx #Kubernetes #Security

container.training/hacktheplanet.yaml at main · jpetazzo/container.training

Slides and code samples for training, tutorials, and workshops about Docker, containers, and Kubernetes. - container.training/hacktheplanet.yaml at main · jpetazzo/container.training

GitHub

On continue avec une règle super importante :

METTEZ VOS KUBERNETES À JOUR

Pareil j'imagine/espère que c'est assez obvious pour pas mal de gens mais ça va mieux en le disant (et vous seriez surpris·e/choqué·e de voir ce que certaines personnes font tourner en prod! SA PLACE EST DANS UN MUSÉE comme dirait Papa Jones)

#LiveToot #Devoxx #Kubernetes #Security

Tiffany explique "ce qui peut partir en cacahuète quand on upgrade son cluster" : grosso modo, le problème principal, c'est les API qui évoluent ; exemple récent l'API Ingress qui est passé de v1beta1 à v1.

Mais K8S nous donne une fenêtre d'environ 1 an durant laquelle on peut utiliser les 2 versions en parallèle, du coup c'est plutôt bon esprit et pas trop stressant à gérer si on s'y prend pas à la dernière minute

#LiveToot #Devoxx #Kubernetes #Security

On enchaîne avec la sécurité réseau... Qu'est-ce qu'on peut faire pour blinder ses clusters ?

- Network Policies Ingress/Egress (ce que j'appelle vulgairement "le firewall de k8s")

- Service Mesh pour complètement chiffrer le trafic (un peu overkill àmha mais c'est possible)

- Filtrage avancé avec par exemple #Cilium et #eBPF

#LiveToot #Devoxx #Kubernetes #Security

Damn elle couvre beaucoup de trucs dans son talk, je galère à tout noter 😅

Donc next : gestion des secrets (API tokens, passwords, clés TLS...)

Recommandation : n'utilisez pas *directement* les secrets ; passez par un système de "secret management" (Vault, KMS cloud, Kamus, Sealed Secrets) - pas mal d'options différentes selon vos besoins

(En tout cas, ne pas commit ses secrets direct dans du YAML dans un repo, d'uh!)

#LiveToot #Devoxx #Kubernetes #Security

On parle ensuite du RBAC (je dois avouer que je m'étais un peu planté, je croyais que c'était son talk sur le RBAC là, mais non son talk sur le RBAC sera demain vendredi matin)

Alors, le point vraiment clé :

utilisez des secrets à courte durée de vie (ça nous rappelle OAUTH et compagnie, avec le coup des token qu'on refresh).

Ça ne résoud pas tout, mais ça limite plein de menaces (e.g. quelqu'un qui aurait encore un mdp 6 mois après être parti)

#LiveToot #Devoxx #Kubernetes #Security

Pro-tip:

kubectl auth can-i --list

→ liste toutes les permissions qu'on a (et si on ajoute "--as toto" ça nous liste les permissions de toto, grâce à la "impersonation API")

Et pour encore plus de fanciness:

kubectl access-matrix

...Et quelques tools que j'ai pas eu le temps de noter 😅
(Mais ça sera dans le replay)

#LiveToot #Devoxx #Kubernetes #Security

Autre pro-tip :

Si vous êtes à l'arrache et pas le temps de mettre des permissions ultra fines, vous pouvez a minima donner des permissions au niveau namespace. Même pas besoin de créer de Role/ClusterRole, vous pouvez utiliser view/edit/admin.

#LiveToot #Devoxx #Kubernetes #Security

Ensuite on parle de "software supply chain". Un mode d'attaque dont on parle beaucoup ce temps-ci.

L'idée c'est de s'assurer que personne ne peut insérer une saleté dans vos containers qui tournent en prod, ... et c'est compliqué parce qu'il faut sécuriser :
- l'accès au dépôt de code
- l'accès aux macines des devs
- les pipelines de test/build
- la configuration de ce pipelines

Toute la chaîne doit être sécurisée ce qui est assez coton

#LiveToot #Devoxx #Kubernetes #Security

Ensuite ça parle de vulnerability scanning, attestations...

J'avais vu un très bon talk sur tous ces concepts de software supply chain par Mohamed Abdennebi à #KCDFrance avec SLSA, sigstore, etc.

(https://www.youtube.com/watch?v=cWpC96J05gI&list=PLmZ3gFl2Aqt8KydeXjUFbzjkTn4RtHcX1&index=8)

#LiveToot #Devoxx #Kubernetes #Security

Sécurisez votre software supply chain avec SLSA, Sigstore et Kyverno - M. Abdennebi, Sfeir

YouTube

Le talk de Tiffany donne une tonne de pistes pour la sécurité sur Kubernetes ; je pense que chaque paire de slides pourrait être un talk de 45 minutes 😅

Elle parle maintenant de l'importance des backups - en terme de sécurité ça peut être le filet de sécurité contre les ransomwares

Et de l'observabilité - qui peut nous donner des signes avant-coureurs qu'il se passe un truc pas net sur nos clusters

#LiveToot #Devoxx #Kubernetes #Security