Depuis son apparition, l’utilisation de Kubernetes ne cesse d’augmenter dans les entreprises, accompagné le plus souvent du déploiement de solutions permettant d'étendre ses fonctionnalités. Dans ces environnements de plus en plus complexes, la mise en place d'outils permettant le respect des bonnes pratiques et la détection de failles de sécurité est bien souvent un enjeu.
Dans ce contexte, Kubescape apporte une solution en proposant deux approches différentes :
- L’analyse statique de fichiers manifestes permettant une détection en amont du déploiement, dit “shift-left”, des vulnérabilités et des mauvaises configurations.
- Une analyse continue des ressources déployées dans votre environnement Kubernetes grâce à son opérateur.
Kubescape est un projet open source, créé par ARMO et soutenu par la CNCF, qui implémente des recommandations en matière de bonnes pratiques et de sécurité. Il se base sur des frameworks fournis par des autorités de sécurité comme MITRE ATT&CK, ou encore la NSA. Il est composé d’une CLI pouvant s’intégrer facilement à des outils de CICD, ainsi qu’un opérateur Kubescape chargé d’analyser en continue les ressources déployées dans votre cluster, puis d’en exposer les métriques .
Au cours de cet article nous verrons comment utiliser et intégrer la CLI Kubescape à Gitlab-CI, ainsi qu’une présentation plus détaillée de l’opérateur Kubescape.
Scanner vos ressources via la CLI Kubescape
La CLI de Kubescape constitue un puissant outil d'analyse de sécurité. Elle effectue une analyse statique des manifestes Kubernetes, des charts Helm, et des configurations Kustomize, permettant une détection précoce des erreurs de configuration et des risques de sécurité.
Dans cette section nous allons voir comment installer cette CLI, et comment l’utiliser pour analyser un cluster en se basant sur un framework, ou une liste de contrôles, ainsi que pour l’analyse de fichiers manifestes en définissant une configuration personnalisée.
Installation de la CLI Kubescape
Analyse de votre cluster via la CLI Kubescape
Lancer des analyses du cluster via la CLI Kubescape permet de générer des rapports sur l’application des bonnes pratiques pour la définition de ressources Kubernetes. Elle est capable de faire un audit de sécurité sur l’ensemble des composants de votre cluster en se basant sur des frameworks ou une liste de contrôles
A noter que par défaut, un scan kubescape lancera une analyse en se basant sur les checks des frameworks NSA et MITRE ATT&CK. Préciser un framework ou un control aura pour effet de concentrer l’analyse sur le framework, ou le(s) contrôle(s) défini.
Analyse de vos fichiers manifests
Analyser vos fichiers manifestes est très utile pour détecter des mauvaises configurations ou vulnérabilités avant le déploiement. Cela garantit un niveau de qualité quant à la définition de ressources Kube, et le respect des bonnes pratiques.
La commande kubescape scan génère un rapport sous différents formats : JSON, JUnit XML, HTML, PDF… facilitant l’intégration avec divers systèmes de reporting.
Pour plus de personnalisation, il est possible de définir une “controls-config” qui contient une définition de règles sur lesquelles Kubescape va se baser pour faire son analyse. Que ce soit pour vérifier l’utilisation de tel ou tel registry, ou s’assurer que vos déploiements contiennent des requests / limits, cette configuration est très pratique pour définir un standard pour le déploiement de ressources Kubernetes.
Voir la liste des paramètres disponibles
Intégration de kubescape scan dans Gitlab-CI
Ajouter un scan statique de fichiers manifestes dans une pipeline CICD permet de définir un ensemble de jobs visant à vérifier vos fichiers manifestes en se basant sur des contrôles. Kubescape fournit un score qui peut être utilisé pour établir un niveau d’acceptation suivant les contrôles effectués. En se basant sur ce score, on peut définir des conditions visant à valider ou non l’exécution d’un job.
Intégrer de l’analyse statique permet d'augmenter la confiance que vous pouvez avoir dans votre CICD, et donc de fluidifier l’automatisation de vos processus de déploiement.
Génération d’un rapport au format PDF
Le scan statique de fichiers manifestes apporte plusieurs avantages tels que la détection de mauvaise configuration, potentielles failles de sécurité dans la définition de ressources Kubernetes, ou encore de mettre en place un système automatisé qui permette de s’assurer du respect des bonnes pratiques.
Cependant, une fois les ressources déployées dans le cluster, l’utilisation du scan statique devient moins intéressante car il ne prend pas en compte la façon dont les ressources vont se comporter dans le cluster. Il existe une multitude de raisons pour lesquelles un déploiement peut ne pas fonctionner, une StorageClass mal configuré, un Secret manquant … tant de choses qui dépendent de l’état du cluster et qui sont hors de la portée d’un outil de scan statique.
C’est donc à ce moment que l’opérateur Kubescape prend le relais, en scannant les ressources déployées à chaque modification, afin de générer des rapports et de remonter des métriques sur le comportement de ces ressources une fois créées et ou modifiées.
Scan continue de votre cluster grâce à l’opérateur Kubescape
L'opérateur Kubescape fonctionne comme une solution de surveillance continue de la sécurité au sein du cluster Kubernetes. Il effectue une évaluation en temps réel des changements de configuration du cluster, surveillant activement les violations potentielles de sécurité. Les politiques réseau sont continuellement validées et appliquées, assurant la conformité aux exigences de sécurité. L'intégration avec les contrôleurs d'admission Kubernetes permet des mesures de sécurité préventives, bloquant les déploiements non conformes avant qu'ils n'atteignent le cluster. Les métriques de sécurité peuvent être exportées vers Prometheus, permettant une surveillance complète de la posture de sécurité du cluster.
Composants de l'Opérateur Kubescape et leurs Rôles
Pour se faire, l'opérateur Kubescape dispose d’un ensemble de microservices qui fournissent une surveillance continue de la sécurité au sein de clusters Kubernetes. On retrouve donc :
Operator : Le composant central qui sert de moteur de déclenchement pour différentes actions dans le cluster :
- Répond aux requêtes API REST et aux connexions websocket
- Gère la planification et l'exécution des analyses
- Crée et gère des CronJobs pour les tâches récurrentes
- Déclenche d'autres composants lorsque nécessaire
Kubescape: À chaque déploiement ou modification d’une ressource Kube, il analyse les ressources Kubernetes à la recherche de mauvaises configurations en utilisant le même moteur que la CLI Kubescape. Il analyse les configurations du cluster par rapport aux frameworks de sécurité et en suivant les best practices.
Kubevuln : En se basant sur Grype, il analyse les images de vos pods pour détecter les vulnérabilités (CVE). Ce composant effectue des analyses de vulnérabilité sur toutes les images déployées dans le cluster.
Storage : Fournit un serveur API agrégé pour exposer les données d'analyse de Kubescape à l'intérieur du cluster via des définitions de ressources personnalisées Kubernetes (CRD). Il stocke les résultats d'analyse et les rend accessibles en tant qu'objets API Kubernetes.
Synchronizer : Envoie des informations sur l'état du cluster aux providers configurés. Il permet également aux providers d'envoyer des commandes à l'opérateur pour effectuer des tâches comme l'exécution d'analyses. Le seul provider disponible actuellement est Armo
Node agent : S'exécute comme un DaemonSet sur chaque nœud du cluster. Il permet :
- L'analyse des hôtes grâce à un accès direct aux nœuds
- La détection de pertinence des vulnérabilités d'exécution
- L'analyse d'accessibilité utilisant eBPF pour déterminer quels packages sont chargés en mémoire
Host Scanner : Effectue des vérifications de sécurité sur les systèmes hôtes où les nœuds Kubernetes sont exécutés.
En résumé, ces composants sont en charge de fournir :
- L'analyse de configuration pour détecter les mauvaises configurations
- L'analyse de vulnérabilité pour les images déployées
- Le stockage intra-cluster des données de posture de sécurité
- La génération automatique de documents VEX (Vulnerability Exploitability eXchange)
- Des capacités de surveillance et d'analyse continues
- L'intégration avec des outils et plateformes de sécurité externes
L'opérateur utilise une série de définitions de ressources personnalisées (CRD) pour stocker et gérer les informations sur les vulnérabilités, les analyses de configuration et d'autres données liées à la sécurité au sein de l'API Kubernetes. Voir les Vulnerabilty summaries

Comme on peut le voir sur ce schéma, l’opérateur se place au centre de l’architecture Kubescape, orchestrant les différents composants responsables des analyses de sécurité et de la détection de failles de sécurité.
Le résultat de chaque analyse est ensuite envoyé dans le Storage où ce dernier les expose au sein du cluster via des APIs ou un exporteur Prometheus.
Source : Kubescape Github
En conclusion
Kubescape est un outil complet qui s’intègre de façon transparente dans chacunes des étapes du déploiement de ressources Kubernetes. Il permet de s’assurer du suivi des bonnes pratiques tout en détectant de façon précoce les failles de sécurité auxquelles vos ressources peuvent être exposées avant leur déploiement. Grâce à une liste de plus de 250 contrôles, et l’utilisation de frameworks se basant sur des standards définis par des autorités en matière de sécurité (MITRE, NSA et CIS), Kubescape vous permet d’anticiper une très grande majorité des incidents de sécurités auxquels vous risqueriez de vous exposez sans en avoir connaissance.
Sa double approche, à savoir l’utilisation de la CLI Kubescape, et le déploiement d’un opérateur dans votre cluster, permet à la fois de définir un niveau d'acceptation quant à la qualité des ressources Kubernetes que vous définissez, et ce, en amont du déploiement, tout en vous offrant une surveillance de ces ressources une fois déployées dans votre cluster.
Enfin, peut s’intégrer facilement dans votre stack. Tout d’abord dans vos pipelines CICD, où la génération de rapport peut avoir de multiple usage. Ensuite, au sein de votre cluster, où les analyses Kubescape se déclenchent à chaque modification d’une ressource, et exposent le résultat de ces analyses via des exporteur Prometheus.