Aller au contenu
Sécurité medium

Sécuriser Kubernetes avec Kubescape 4.0

33 min de lecture

logo kubernetes

Kubescape 4.0 est une plateforme de sécurité Kubernetes open-source qui scanne vos clusters, manifests et images pour détecter les vulnérabilités CVE et les mauvaises configurations. Cette version majeure introduit la correction automatique des manifests, le scan d’images, les Validating Admission Policies natives Kubernetes et le patch d’images vulnérables.

  • Scanner un cluster selon les frameworks NSA, MITRE, CIS
  • Détecter les CVE dans vos images conteneurs
  • Corriger automatiquement les manifests avec kubescape fix
  • Générer des Validating Admission Policies (VAP)
  • Patcher les images vulnérables

La version 4.0 de Kubescape apporte des fonctionnalités majeures qui transforment l’outil en plateforme de sécurité complète :

FonctionnalitéDescriptionCommande
Scan d’imagesDétection des CVE dans les images conteneurskubescape scan image
Fix automatiqueCorrection des manifests YAML insécuriséskubescape fix
VAP nativesGénération de Validating Admission Policies CELkubescape vap
Patch d’imagesCorrection automatique des vulnérabilités d’imageskubescape patch
Serveur MCPIntégration avec assistants IAkubescape mcpserver
Nouveaux CISSupport CIS v1.10, v1.12, AKS/EKS t1.8kubescape list frameworks
PerformanceOptimisation CPU/mémoire pour scans intensifs

Kubescape propose un ensemble riche de fonctionnalités pour renforcer la sécurité des environnements Kubernetes :

  1. Shift-left security : Kubescape permet aux développeurs d’identifier les mauvais paramétrages dès la soumission des fichiers de manifeste, favorisant une approche proactive de la sécurité.
  2. Intégration IDE et CI/CD : L’outil s’intègre facilement à des environnements de développement comme VSCode, Lens et à des plateformes CI/CD telles que GitHub et GitLab, ce qui permet de réaliser des vérifications de sécurité tout au long du processus de développement.
  3. Scan de clusters : Kubescape peut scanner les clusters Kubernetes actifs à la recherche de vulnérabilités, de configurations incorrectes ou d’autres problèmes de sécurité.
  4. Support de plusieurs frameworks : Il teste les configurations de sécurité selon divers cadres tels que la NSA, MITRE, SOC2 et d’autres.
  5. Validation des YAML et des charts Helm : L’outil vérifie les fichiers YAML et les Helm charts selon les critères des cadres de sécurité, même en l’absence d’un cluster actif.
  6. Renforcement de Kubernetes : Il permet d’identifier et de remédier aux mauvaises configurations et vulnérabilités via des scans manuels, récurrents ou déclenchés par un événement.
  7. Sécurité à l’exécution : Kubescape offre une protection continue à l’exécution avec une surveillance constante et la détection des menaces pour les applications déployées.
  8. Gestion de la conformité : L’outil aide à maintenir la conformité aux cadres et normes reconnus, simplifiant ainsi le respect des exigences réglementaires.
  9. Support multi-cloud : Il offre une sécurité fluide sur plusieurs fournisseurs cloud et différentes distributions de Kubernetes, garantissant une protection homogène.

Ces fonctionnalités rendent Kubescape très flexible pour assurer une sécurité robuste à chaque étape du cycle de vie d’un projet Kubernetes, que ce soit au niveau du code, de l’infrastructure ou des applications en production.

Installez Kubescape via le script officiel :

Fenêtre de terminal
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash

Ajoutez le binaire à votre PATH :

Fenêtre de terminal
export PATH=$PATH:$HOME/.kubescape/bin

Vérifiez l’installation :

Fenêtre de terminal
kubescape version
# Your current version is: 4.0.1
# Build date: 2026-02-12T15:17:22Z

Kubescape propose deux modes d’utilisation complémentaires :

Cas d’usage : scans ponctuels, pipelines CI/CD, analyse locale.

  • Installation : binaire local (curl) ou container Docker
  • Scan d’images : manuel avec kubescape scan image
  • Registry privé : credentials passés en ligne de commande
  • Rapports : fichiers locaux (SARIF, JSON, HTML, JUnit)
  • Impact : aucun sur le cluster, exécution côté développeur/CI
Fenêtre de terminal
# Exemple : scan CI avec seuil
kubescape scan . --compliance-threshold 80 --format sarif

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 :

Le tableau des frameworks supportés par Kubescape inclut plusieurs options qui permettent d’auditer et de sécuriser un cluster Kubernetes. Voici une description des principaux cadres :

  • AllControls : Exécute tous les contrôles disponibles.
  • ArmoBest : Propose des recommandations spécifiques basées sur l’expertise de l’équipe Kubescape.
  • DevOpsBest : Couverture basique des points essentiels pour la sécurité.
  • MITRE et NSA : Conformes aux recommandations des organisations respectives.
  • SOC2 : Axé sur la conformité SOC 2.
  • CIS : Des contrôles spécifiques pour les versions Kubernetes AKS, EKS et standard.

Ces cadres vous permettent de choisir celui qui correspond le mieux à vos besoins de sécurité, en fonction de l’environnement utilisé.

Pour afficher les frameworks disponibles :

Fenêtre de terminal
kubescape list frameworks
╭──────────────────────╮
Supported frameworks
├──────────────────────┤
AllControls
├──────────────────────┤
ArmoBest
├──────────────────────┤
DevOpsBest
├──────────────────────┤
MITRE
├──────────────────────┤
NSA
├──────────────────────┤
SOC2
├──────────────────────┤
cis-aks-t1.2.0
├──────────────────────┤
cis-aks-t1.8.0
├──────────────────────┤
cis-eks-t1.7.0
├──────────────────────┤
cis-eks-t1.8.0
├──────────────────────┤
cis-v1.10.0
├──────────────────────┤
cis-v1.12.0
╰──────────────────────╯

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.

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 durcis.

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 :

Fenêtre de terminal
kubescape scan
# Sortie sur un cluster Minikube de test
Security posture overview for cluster: 'minikube'
In this overview, Kubescape shows you a summary of your cluster security posture...
Control plane
╭────┬─────────────────────────────────────┬───────────────────────────────────────────╮
Control name Docs
├────┼─────────────────────────────────────┼───────────────────────────────────────────┤
API server insecure port is enabled https://kubescape.io/docs/controls/c-0005
Anonymous access enabled https://kubescape.io/docs/controls/c-0262
Audit logs enabled https://kubescape.io/docs/controls/c-0067
RBAC enabled https://kubescape.io/docs/controls/c-0088
Secret/etcd encryption enabled https://kubescape.io/docs/controls/c-0066
╰────┴─────────────────────────────────────┴───────────────────────────────────────────╯
Access control
╭────────────────────────────────────────────────────┬───────────┬────────────────────────────────────╮
Control name Resources View details
├────────────────────────────────────────────────────┼───────────┼────────────────────────────────────┤
Administrative Roles 1 $ kubescape scan control C-0035 -v
List Kubernetes secrets 12 $ kubescape scan control C-0015 -v
Minimize access to create pods 4 $ kubescape scan control C-0188 -v
Minimize wildcard use in Roles and ClusterRoles 1 $ kubescape scan control C-0187 -v
Portforwarding privileges 1 $ kubescape scan control C-0063 -v
Prevent containers from allowing command execution 2 $ kubescape scan control C-0002 -v
Roles with delete capabilities 8 $ kubescape scan control C-0007 -v
Validate admission controller (mutating) │ 1 │ $ kubescape scan control C-0039 -v │
Validate admission controller (validating) │ 2 │ $ kubescape scan control C-0036 -v │
╰────────────────────────────────────────────────────┴───────────┴────────────────────────────────────╯
Secrets
╭─────────────────────────────────────────────────┬───────────┬────────────────────────────────────╮
Control name Resources View details
├─────────────────────────────────────────────────┼───────────┼────────────────────────────────────┤
Applications credentials in configuration files 2 $ kubescape scan control C-0012 -v
╰─────────────────────────────────────────────────┴───────────┴────────────────────────────────────╯
Network
╭────────────────────────┬───────────┬────────────────────────────────────╮
Control name Resources View details
├────────────────────────┼───────────┼────────────────────────────────────┤
Missing network policy 16 $ kubescape scan control C-0260 -v
╰────────────────────────┴───────────┴────────────────────────────────────╯
Workload
╭─────────────────────────┬───────────┬────────────────────────────────────╮
Control name Resources View details
├─────────────────────────┼───────────┼────────────────────────────────────┤
Host PID/IPC privileges 0 $ kubescape scan control C-0038 -v
HostNetwork access 0 $ kubescape scan control C-0041 -v
HostPath mount 0 $ kubescape scan control C-0048 -v
Non-root containers 15 $ kubescape scan control C-0013 -v
Privileged container 0 $ kubescape scan control C-0057 -v
╰─────────────────────────┴───────────┴────────────────────────────────────╯
Highest-stake workloads
───────────────────────
High-stakes workloads are defined as those which Kubescape estimates would have
the highest impact if they were to be exploited.
1. namespace: ingress-nginx, name: ingress-nginx-controller, kind: Deployment
2. namespace: default, name: my-app, kind: Deployment
3. namespace: kube-system, name: coredns, kind: Deployment
Compliance Score
────────────────
* MITRE: 63.90%
* NSA: 63.04%
View a full compliance report by running '$ kubescape scan framework nsa'

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.

Fenêtre de terminal
kubescape scan --format html --output results.html

kubescape scan

Un exemple de remédiation proposé :

kubescape remediation

Il suffit de suivre le lien.

Scanner uniquement avec le framework NSA :

Fenêtre de terminal
kubescape scan framework NSA
──────────────────────────────────────────────────
Framework scanned: NSA
╭─────────────────┬────╮
Controls 26
Passed 7
Failed 17
Action Required 2
╰─────────────────┴────╯
Failed resources by severity:
╭──────────┬────╮
Critical 0
High 20
Medium 88
Low 13
╰──────────┴────╯
╭──────────┬────────────────────────────────────────────────────┬──────────────────┬───────────────┬───────────────────╮
Severity Control name Failed resources All Resources Compliance score
├──────────┼────────────────────────────────────────────────────┼──────────────────┼───────────────┼───────────────────┤
High Applications credentials in configuration files 2 47 96%
High Ensure CPU limits are set 9 23 61%
High Ensure memory limits are set 9 23 61%
Medium Non-root containers 15 23 35%
Medium Allow privilege escalation 10 23 57%
Medium Ingress and Egress blocked 15 23 35%
├──────────┼────────────────────────────────────────────────────┼──────────────────┼───────────────┼───────────────────┤
Resource Summary 43 215 63.04%
╰──────────┴────────────────────────────────────────────────────┴──────────────────┴───────────────┴───────────────────╯

Scanner un namespace spécifique :

Fenêtre de terminal
kubescape scan --include-namespaces default framework DevOpsBest

Exclure certains namespaces :

Fenêtre de terminal
kubescape scan --exclude-namespaces kube-system,kube-public framework NSA

Pour découvrir toutes les options disponibles :

Fenêtre de terminal
kubescape list --help
List frameworks/controls will list the supported frameworks and controls
Usage:
kubescape list <policy> [flags]
Examples:
# List default supported frameworks names
kubescape list frameworks
# List all supported frameworks names
kubescape list frameworks --account <account id>
# List all supported controls names with ids
kubescape list controls
Control documentation:
https://kubescape.io/docs/controls/
Flags:
--access-key string Kubescape SaaS access key. Default will load access key from cache
--account string Kubescape SaaS account ID. Default will load account ID from cache
--format string output format. supported: 'pretty-print'/'json' (default "pretty-print")
-h, --help help for list
Global Flags:
--cache-dir string Cache directory [$KS_CACHE_DIR] (default "~/.kubescape")
--kube-context string Kube context. Default will use the current-context
-l, --logger string Logger level. Supported: debug/info/success/warning/error/fatal [$KS_LOGGER] (default "info")
--server string Backend discovery server URL

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.

Fenêtre de terminal
kubescape scan framework DevOpsBest https://github.com/kubescape/kubescape
──────────────────────────────────────────────────
Framework scanned: DevOpsBest
╭─────────────────┬────╮
Controls 15
Passed 5
Failed 10
Action Required 0
╰─────────────────┴────╯
Failed resources by severity:
╭──────────┬─────╮
Critical 0
High 100
Medium 52
Low 395
╰──────────┴─────╯
╭──────────┬────────────────────────────────┬──────────────────┬───────────────┬──────────────────╮
Severity Control name Failed resources All Resources Compliance score
├──────────┼────────────────────────────────┼──────────────────┼───────────────┼──────────────────┤
High Ensure CPU limits are set 50 66 24%
High Ensure memory limits are set 50 66 24%
Medium Configured liveness probe 52 66 21%
Low Configured readiness probe 52 66 21%
Low Pods in default namespace 65 66 2%
Low Naked pods 48 48 0%
Low Label usage for resources 64 66 3%
Low K8s common labels usage 66 66 0%
├──────────┼────────────────────────────────┼──────────────────┼───────────────┼──────────────────┤
Resource Summary 66 66 42.93%
╰──────────┴────────────────────────────────┴──────────────────┴───────────────┴──────────────────╯

Pour analyser des manifests YAML :

Fenêtre de terminal
kubescape scan *.yaml

Pour analyser un une chart HELM :

Fenêtre de terminal
kubescape scan https://github.com/AdminTurnedDevOps/PearsonCourses/tree/main/Helm-Charts-For-Kubernetes/Segment3/nginxupdate

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é ).

Kubescape scanne les images conteneurs pour détecter les vulnérabilités CVE, sans avoir besoin d’un cluster actif (mode CLI).

Fenêtre de terminal
kubescape scan image nginx:1.27-alpine
# Sortie au 17 février 2026 (les CVE varient selon la date du scan)
╭──────────┬────────────────┬────────────┬───────────┬───────────┬───────────────────╮
Severity Vulnerability Component Version Fixed in Image
├──────────┼────────────────┼────────────┼───────────┼───────────┼───────────────────┤
Critical CVE-2025-15467 libcrypto3 3.3.3-r0 3.3.6-r0 nginx:1.27-alpine
Critical CVE-2025-15467 libssl3 3.3.3-r0 3.3.6-r0 nginx:1.27-alpine
Critical CVE-2025-49794 libxml2 2.13.4-r5 2.13.9-r0 nginx:1.27-alpine
High CVE-2025-5399 curl 8.12.1-r1 8.14.1-r0 nginx:1.27-alpine
High CVE-2025-5399 libcurl 8.12.1-r1 8.14.1-r0 nginx:1.27-alpine
High CVE-2025-59375 libexpat 2.7.0-r0 2.7.2-r0 nginx:1.27-alpine
High CVE-2026-1642 nginx 1.27.5-r1 nginx:1.27-alpine
╰──────────┴────────────────┴────────────┴───────────┴───────────┴───────────────────╯
81 vulnerabilities found
* 4 Critical
* 27 High
* 38 Medium
* 12 Other

CLI :

Fenêtre de terminal
kubescape scan image registry.example.com/app:v1.2 \
--username $REGISTRY_USER \
--password $REGISTRY_PASSWORD

Opérateur : configurez un Secret Kubernetes avec vos credentials, puis référencez-le dans la configuration de l’opérateur. Voir la documentation Kubescape sur les registries privés.

Combinez scan de configuration et scan d’images :

Fenêtre de terminal
kubescape scan workload Deployment/my-app --namespace production --scan-images

La commande kubescape fix analyse un rapport de scan et corrige automatiquement les manifests YAML pour appliquer les bonnes pratiques de sécurité.

  1. Scanner le manifest et générer un rapport JSON

    Fenêtre de terminal
    kubescape scan deployment.yaml --format json --output scan-results.json
  2. Appliquer les corrections automatiques

    Fenêtre de terminal
    kubescape fix scan-results.json

    Kubescape affiche les changements appliqués :

    The following changes will be applied:
    File: deployment.yaml
    Resource: insecure-app
    Kind: Deployment
    Changes:
    1) spec.template.spec.containers[0].securityContext.runAsGroup = 1000
    2) spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem = true
    3) spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation = false
    4) spec.template.spec.containers[0].securityContext.privileged = false
    5) spec.template.spec.containers[0].securityContext.runAsNonRoot = true
  3. Vérifier les changements (dry-run)

    Fenêtre de terminal
    kubescape fix scan-results.json --dry-run

Kubescape peut générer des Validating Admission Policies (VAP) natives Kubernetes pour bloquer les ressources non conformes avant leur création.

Fenêtre de terminal
kubescape vap deploy-library | kubectl apply -f -

Cette commande crée :

  • Un CustomResourceDefinition ControlConfiguration
  • Les ValidatingAdmissionPolicy pour chaque contrôle Kubescape

Bloquer les conteneurs privilégiés dans le namespace default :

Fenêtre de terminal
kubescape vap create-policy-binding \
--name no-privileged \
--policy c-0057 \
--namespace=default | kubectl apply -f -

Résultat généré :

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicyBinding
metadata:
name: no-privileged
spec:
matchResources:
namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: In
values:
- default
policyName: c-0057
validationActions:
- Deny

La commande kubescape patch s’appuie sur Copacetic et BuildKit pour reconstruire une image en mettant à jour les packages vulnérables, sans modifier le Dockerfile d’origine.

Le patching nécessite buildkitd en cours d’exécution :

Fenêtre de terminal
sudo buildkitd &
Fenêtre de terminal
sudo kubescape patch --image docker.io/library/nginx:1.22

Kubescape :

  1. Scanne l’image pour identifier les CVE
  2. Génère un Dockerfile temporaire avec les mises à jour
  3. Reconstruit l’image avec le tag -patched
Fenêtre de terminal
# Spécifier un tag personnalisé
kubescape patch --image nginx:1.22 --tag nginx:1.22-secure
# Mode verbose pour voir le détail
kubescape patch --image nginx:1.22 --verbose
# Définir un seuil de sévérité (échoue si CVE Critical)
kubescape patch --image nginx:1.22 --severity-threshold Critical

kubescape s’intègre dans la plupart des pipelines CI/CD :

  • GitHub Actions (action officielle)
  • GitLab CI
  • Azure DevOps
  • Jenkins
  • ArgoCD

Adaptez le comportement selon la branche :

ContexteComportementSeuils
Pull RequestWarning (non bloquant)Score affiché, pas de fail
main/masterBloquant--compliance-threshold 80 --severity-threshold Critical
Release/tagBloquant strict--compliance-threshold 90 --severity-threshold High
name: Kubescape Security Scan
on: [push, pull_request]
jobs:
security-scan:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install Kubescape
run: |
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
echo "$HOME/.kubescape/bin" >> $GITHUB_PATH
- name: Scan manifests
run: |
kubescape scan . \
--format sarif \
--output results.sarif \
--compliance-threshold 80 \
--severity-threshold High
- name: Upload to GitHub Security
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: results.sarif
OptionDescriptionExemple
--compliance-thresholdScore minimum de conformité (%)--compliance-threshold 80
--severity-thresholdÉchoue si vulnérabilités >= sévérité--severity-threshold High
--formatFormat de sortie (sarif, json, junit, html)--format sarif

Lorsque vous intégrez Kubescape en CI, vous allez rapidement avoir des faux positifs ou des alertes acceptées temporairement. Sans gestion des exceptions, vous deviendrez “sourds” aux alertes.

Figez l’état actuel comme référence :

Fenêtre de terminal
kubescape scan --format json --output baseline.json

Créez un fichier exceptions.json :

{
"name": "Exceptions projet X",
"policyType": "exceptions",
"exceptions": [
{
"name": "Allow privileged for monitoring",
"policyId": "C-0057",
"resources": [
{
"designator": "Namespace=monitoring"
}
]
}
]
}

Appliquez lors du scan :

Fenêtre de terminal
kubescape scan --exceptions exceptions.json

Kubescape fournit une extension VSCode qui analyse les manifests en temps réel pendant l’édition.

Extension VSCode Kubescape

L’extension détecte automatiquement :

  • Les configurations non sécurisées
  • Les images vulnérables
  • Les manques de limites de ressources
  • Les violations de bonnes pratiques
  • Kubescape est une plateforme complète de sécurité Kubernetes
  • CLI pour les scans ponctuels et CI/CD, Opérateur pour la surveillance continue
  • La commande scan audite clusters, manifests et images selon NSA, MITRE, CIS
  • Le scan d’images détecte les CVE (résultats dépendent de la fraîcheur de la base)
  • kubescape fix corrige automatiquement les manifests (toujours --dry-run d’abord)
  • Les VAP bloquent les déploiements non conformes (GA depuis K8s 1.30)
  • kubescape patch utilise Copacetic/BuildKit pour corriger les images
  • Gérez vos exceptions dans Git pour éviter le drift et la fatigue d’alertes
  • Les seuils CI (--compliance-threshold, --severity-threshold) automatisent le contrôle qualité

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.