Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
kubesec — Analyse des risques de sécurité pour les ressources Kubernetes | Kitploit
Outils/GitHubGitHub/controlplaneio/kubesec
Sécurité de l'Infrastructure CloudOutils DéfensifsAnalyse StatiqueSécurité des ConteneursAudit de ConfigurationSécurité CloudDevSecOpsMauvaise Configuration
GitHubcontrolplaneio/kubesec

kubesec

Analyse des risques de sécurité pour les ressources Kubernetes

Voir le dépôt
1.5k108il y a 1 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

Kubesec

Testing Workflow Security Analysis Workflow Release Workflow

Go Report Card PkgGoDev

🚨 L'API v1 est obsolète, veuillez lire les notes de version 🚨

Analyse des risques de sécurité pour les ressources Kubernetes

🎬 Démo

Démo CLI Kubesec

Pour plus d'exemples, visitez Kubesec.io, qui utilise l'API hébergée de ControlPlane à l'adresse v2.kubesec.io/scan.


  • Démarrage rapide
  • Téléchargement de Kubesec
  • Exemples d'utilisation
    • Analyse
      • Utilisation de Docker
      • Formats de sortie
    • Afficher les règles
    • Schémas personnalisés
  • Mode serveur HTTP
  • Kubesec en tant que service
  • Contribution
  • Obtenir de l'aide
  • Journal des modifications

🚀 Démarrage rapide

1. Préparez votre manifeste

Créez un fichier de ressource Kubernetes (par exemple, kubesec-test.yaml) à analyser. Pour un test rapide, vous pouvez enregistrer le manifeste Pod suivant :

root@kitploit:~
$ cat <<EOF > kubesec-test.yaml
apiVersion: v1
kind: Pod
metadata:
  name: kubesec-demo
spec:
  containers:
  - name: kubesec-demo
    image: gcr.io/google-samples/node-hello:1.0
    securityContext:
      readOnlyRootFilesystem: true
EOF

2. Lancez votre première analyse

Exécutez une analyse sur votre fichier de manifeste :

root@kitploit:~
# Using the local binary
kubesec scan kubesec-test.yaml

# Or using Docker
docker run -i kubesec/kubesec:v2 scan /dev/stdin < kubesec-test.yaml

# Using the local binary with a human-readable table output format
kubesec scan kubesec-test.yaml --format table

[!TIP] Pour afficher les résultats dans un tableau lisible plutôt qu'au format JSON par défaut, utilisez l'option --format table.

kubesec affichera un score de sécurité et une analyse détaillée de votre ressource.

📦 Téléchargement de Kubesec

Kubesec est disponible sous forme de :

  • Image de conteneur Docker sur docker.io/kubesec/kubesec:v2
  • Binaire Linux/MacOS/Win (obtenez la dernière version)
  • Contrôleur d'admission Kubernetes
  • Plugin Kubectl

Ou installez le dernier commit depuis GitHub avec :

Go 1.16+

root@kitploit:~
$ go install github.com/controlplaneio/kubesec/v2@latest

Go version < 1.16

root@kitploit:~
$ GO111MODULE="on" go get github.com/controlplaneio/kubesec/v2

📖 Exemples d'utilisation

Analyse

Analysez des ressources Kubernetes à partir de fichiers locaux ou de l'entrée standard.

Kubesec peut analyser plusieurs documents YAML dans un seul fichier d'entrée, ou analyser des documents provenant de plusieurs fichiers à la fois, à condition qu'ils soient correctement formatés comme plusieurs documents séparés par ---.

root@kitploit:~
# Scan a specific local YAML file
kubesec scan ./deployment.yaml

# Scan from standard input (JSON or YAML)
cat file.json | kubesec scan -

# Scan a rendered Helm chart
helm template -f values.yaml ./chart | kubesec scan /dev/stdin

# Scan multiple YAML documents separated by '---'
{ cat test/asset/multi.yml; echo "---"; cat test/asset/critical.yml; } | kubesec scan -

Utilisation de Docker

Vous pouvez exécuter les mêmes commandes d'analyse en utilisant l'image Docker officielle :

root@kitploit:~
# Scan a file via Docker using standard input
docker run -i kubesec/kubesec:v2 scan /dev/stdin < kubesec-test.yaml

Formats de sortie

Kubesec prend en charge trois formats de sortie différents, spécifiés par l'option --format / -f : json (par défaut), table et template, et peut analyser plusieurs documents YAML dans un seul fichier d'entrée.

root@kitploit:~
# JSON array output (default behaviour)
kubesec scan ./deployment.yaml --format json

# Human-readable table output
kubesec scan ./deployment.yaml --format table

# Use a custom template for the output
kubesec scan ./deployment.yaml --format template --template report-template.tmpl

Analyser des règles spécifiques

root@kitploit:~
# One rule
kubesec scan --rules CapSysAdmin kubesec-test.yaml

# Multiple rules
kubesec scan --rules RunAsNonRoot,SeccompAny,ApparmorAny kubesec-test.yaml
Exemple de sortie JSON
root@kitploit:~
[
  {
    "object": "Pod/security-context-demo.default",
    "valid": true,
    "message": "Failed with a score of -30 points",
    "score": -30,
    "scoring": {
      "critical": [
        {
          "selector": "containers[] .securityContext .capabilities .add == SYS_ADMIN",
          "reason": "CAP_SYS_ADMIN is the most privileged capability and should always be avoided",
          "points": -30
        }
      ],
      "advise": [
        {
          "selector": "containers[] .securityContext .runAsNonRoot == true",
          "reason": "Force the running image to run as a non-root user to ensure least privilege",
          "points": 1
        },
        {
          // ...
        }
      ]
    }
  }
]
Exemple de sortie Table

Table output

Afficher les règles

root@kitploit:~
# Print all scanning rules with their associated point scores
kubesec print-rules

# Print all scanning rules with their associated point scores as a table
kubesec print-rules --format table

Exemple de sortie JSON des règles

root@kitploit:~
[
  {
    "id": "AllowPrivilegeEscalation",
    "selector": "containers[] .securityContext .allowPrivilegeEscalation == true",
    "reason": "Ensure a non-root process can not gain more privileges",
    "kinds": [
      "Pod",
      "Deployment",
      "StatefulSet",
      "DaemonSet"
    ],
    "points": -7,
    "advise": 0
  },
...
]

Schémas personnalisés

Kubesec utilise kubeconform (merci @yannh) pour valider les manifestes à analyser. Cela implique que la spécification de différents emplacements de schémas suit les règles décrites dans le README de kubeconform.

root@kitploit:~
# Usees the latest schema from upstream
# Schema will be fetched from: https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master-standalone-strict/pod-v1.json
kubesec scan ./pod.yaml

# Use a specific schema version from upstream (format x.y.z with no v prefix)
# Schema will be fetched from: https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.25.3-standalone-strict/pod-v1.json
kubesec scan ./pod.yaml --kubernetes-version 1.25.3

# Use a specific schema version in an airgapped environment over HTTP
# Schema will be fetched from: `https://host.server/v<version>-standalone-strict/pod-v1.json`
kubesec scan ./deployment.yaml --kubernetes-version <version> --schema-location https://host.server

# Use a specific schema version in an airgap environment with local files
# Schema will be read from: `/opt/schemas/v<version>-standalone-strict/pod-v1.json`
kubesec scan ./deployment.yaml --kubernetes-version <version> --schema-location /opt/schemas

Remarque : afin de limiter les appels réseau externes et de permettre une utilisation dans des environnements isolés (airgap), l'image kubesec intègre les schémas. Si vous souhaitez modifier l'emplacement des schémas, vous devrez changer les variables d'environnement K8S_SCHEMA_VER et SCHEMA_LOCATION au moment de l'exécution.

Mode serveur HTTP

Kubesec inclut un serveur HTTP intégré que vous pouvez exécuter localement ou dans un conteneur pour accepter des demandes d'analyse sur le réseau.

Utilisation en CLI

root@kitploit:~
# Start the HTTP server in the background on port 8080
kubesec http 8080 &

# Send a file to the running server via POST
curl -sSX POST --data-binary @deployment.yaml http://localhost:8080/scan

# Stop the background local server when finished
kill %

Utilisation avec Docker

root@kitploit:~
# Start the HTTP server using Docker
docker run -d -p 8080:8080 kubesec/kubesec:v2 http 8080

# Send a file to the running server via POST
curl -sSX POST --data-binary @deployment.yaml http://localhost:8080/scan

N'oubliez pas d'arrêter le serveur.

Kubesec en tant que service

Kubesec est également disponible via HTTPS à l'adresse v2.kubesec.io/scan.

Ne soumettez pas de YAML sensible à ce service public.

Le service est fourni sur une base de bonne foi et de meilleur effort.

root@kitploit:~
# Submit a manifest directly to the hosted v2 API
curl -sSX POST --data-binary @"deployment.yaml" https://v2.kubesec.io/scan

# Parse the API output using jq to return a non-zero exit code if the score is <= 10
curl -sSX POST --data-binary @"deployment.yaml" https://v2.kubesec.io/scan | jq --exit-status '.score > 10'

# Use the "rule" query parameter to scan only specific rules (multiple supported)
curl -sSX POST --data-binary @test/asset/score-0-cap-sys-admin.yml "http://localhost:8080/scan?rule=SeccompAny&rule=ApparmorAny"

Vous pouvez également définir une fonction Bash, par exemple :

root@kitploit:~
# Define a BASH function
$ kubesec ()
{
    local FILE="${1:-}";
    [[ ! -e "${FILE}" ]] && {
        echo "kubesec: ${FILE}: No such file" >&2;
        return 1
    };
    curl --silent \
      --compressed \
      --connect-timeout 5 \
      -sSX POST \
      --data-binary=@"${FILE}" \
      https://v2.kubesec.io/scan
}


# POST a Kubernetes resource to v2.kubesec.io/scan
$ kubesec ./deployment.yml

# Return non-zero status code is the score is not greater than 10
$ kubesec ./score-9-deployment.yml | jq --exit-status '.score > 10' >/dev/null
# status code 1

Contribution

Consultez CONTRIBUTING.md pour plus d'informations.

Obtenir de l'aide

Si vous avez des questions sur Kubesec et la sécurité Kubernetes :

  • Lisez la documentation Kubesec
  • Contactez sur Twitter @sublimino ou @controlplaneio
  • Ouvrez un ticket (issue)

Vos retours sont toujours les bienvenus !


Fait avec ❤ par ControlPlane

Télécharger l’outil