kubescape un outil d'audit de cluster K8S
Kubernetes prend une place de plus en plus importante dans les infrastructures, même s’il est assez facile de déployer et de garantir la disponibilité des applications, sa mécanique est réellement complexe. Et comme on dit souvent “sans maîtrise, la puissance n’est rien”. En effet, installé et configuré par défaut un cluster kubernetes est vulnérable aux attaques.
Je vous propose de découvrir kubescape, un outil open source de contrôle de sécurité de clusters Kubernetes, développé par la société ARMO. Cet outil est un véritable couteau suisse de la sécurité des infrastructures cloud native, en effet, il permet :
- d’analyser les clusters de Kubernetes;
- d’inspecter les registres de conteneurs dont Elastic Container Registry, Google Container Registry, Quay, …;
- d’analyser les manifests au format YAML mais aussi les charts HELM;
Attention c’est plus qu’un outil d’analyse, kubescape fournit sur son site toutes les documentations pour remédier aux failles découvertes. Pour ceux qui veulent progresser sur kubernetes cet outil est une véritable mine d’or.
Son écosystème est très important, car Armo fournit :
- Une CLI qui peut être utiliser dans la plupart des outils de CI/CD;
- Une extension Visual Code qui vous assiste dans la rédaction des Charts HELM et des manifests YAML;
- Un espace Cloud qui permet entre autre de stocker les résultats des scans;
Nous allons nous concentrer sur l’utilisation de la CLI et de l’interprétation des résultats.
Installation de kubescape
L’installation est assez simple puisqu’elle peut être faite via une simple commande curl :
Une fois installée, vous pouvez vérifier la version installée :
Fonctionnement de kubescape
kubescape utilise toute une série de contrôles basés sur les directives de sécurité fournies par la NSA, la CISA et Microsoft, entre autres. Ces contrôles sont regroupés en quatre catégories, appelées des cadres :
- NSA: suit les directives d’hardening de Kubernetes fournies par la NSA, qui se concentre sur la sécurité des applications.
- MITRE: suit les directives fournies par le framework MITRE de Microsoft. MITRE vise principalement à protéger les clusters de Kubernetes.
- ArmoBest: le Cadre ARMO est maintenu par les mêmes personnes derrière kubescape. Le cadre tente de couvrir les angles morts entre les cadres MITRE et NSA.
- DevOpsBest: un cadre minimal couvrant les points les plus essentiels pour la sécurité des infrastructures et des applications.
- …
Par défaut, kubescape exécutera tous ces frameworks et indiquera un niveau de risque pour chacun d’entre eux.
Pour affichier les frameworks disponibles :
Nos Premiers scans avec kubescape
Plutôt que de lancer tous les contrôles, nous allons découper notre analyse sous deux angles. En effet, l’analyse peut se faire soit sur l’état de santé du Cluster, soit de celui des applications qu’il héberge.
Analyse d’un Cluster Kubernetes avec kubescape
En premier lieu, pour assurer la sécurité des applications hébergées au sein
de nos clusters Kubernetes contre les attaques, il est important que ceux-ci
soient correctement hardener
(durci).
kubescape permet :
- D’identifier des nodes non sécurisés (clients Kubelet sans authentification TLS)
- De rechercher les interfaces exposées et non sécurisées, par ex. une API.
- De détecter si le cluster est affecté par des CVE connues.
- De détecter les politiques réseau manquantes.
- …
Pour lancer une analyse, il suffit de lancer la commande scan :
Pour simplifier la lecture et je préfère cette solution, car elle fournit les
liens de remédiations des erreurs rencontrées, j’utilise la sortie au format html
.
Un exemple de remédiation proposé :
Il suffit de suivre le lien ↗.
Limiter le scan à un framework, un namespace
Par exemple pour limiter le scan au framework Dev
A un namespace :
Cet outil regorge d’options. Pour les découvrir, il suffit d’utiliser
l’option --help
, cela fonctionne avec toutes les commandes.
Analyse des manifests YAML et des charts HELM
Kubescape permet d’analyser les manifests YAML mais aussi les Charts HELM. Il permet même de le faire directement dans le dépôt du code source.
Pour analyser des manifests YAML :
Pour analyser un une chart HELM :
En analysant les manifests, kubescape peut détecter des problèmes de type :
- Services SSH non sécurisés fonctionnant à l’intérieur d’un conteneur
- Utilisation de sudo des dans la commande de démarrage d’un conteneur
- Exécution de conteneurs en tant que root ou avec des capacités excessives
- Pods prenant trop de ressources CPU et Mémoire.
- …
A la fin de l’analyse kubescape fourni un score de risque de 0% ( très sécurisé ) à 100% ( non sécurisé ).
Utilisation dans les outils de CI/CD
kubescape peut être utilisé dans la plupart des outils de CI/CD dont :
- Gitlab-CI
- ArgoCD
- CircleCI
- Azure Devops Pipeline
- Github Actions
- Jenkins
- …
Un exemple de pipeline avec Github Actions :
Tout est envisageable avec kubescape!
Utilisation de l’extension VSCode
kubescape fournit également une extension VSCode ↗ qui permet d’analyser à la volée un manifest.
Conclusion
kubescape est vraiment un bel outil qui mérite qu’on s’y attarde. Je n’ai pas essayé de l’installer dans mon cluster Kubernetes, car c’est possible, mais je vais pousser mon analyse plus loin.