Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
kubesec — Sicherheitsrisikoanalyse für Kubernetes-Ressourcen | Kitploit
Tools/GitHubGitHub/controlplaneio/kubesec
Cloud-Infrastruktur-SicherheitDefensivwerkzeugeStatische AnalyseContainer-SicherheitKonfigurationsprüfungCloud-SicherheitDevSecOpsFehlkonfiguration
GitHubcontrolplaneio/kubesec

kubesec

Sicherheitsrisikoanalyse für Kubernetes-Ressourcen

Repository anzeigen
1.5k108vor 1 MonatVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

Kubesec

Testing Workflow Security Analysis Workflow Release Workflow

Go Report Card PkgGoDev

🚨 Die v1 API ist veraltet, bitte lesen Sie die Release-Notes 🚨

Sicherheitsrisikoanalyse für Kubernetes-Ressourcen

🎬 Demo

Kubesec-CLI-Demo

Weitere Beispiele finden Sie auf Kubesec.io, das die gehostete API von ControlPlane unter v2.kubesec.io/scan verwendet.


  • Schnellstart
  • Kubesec herunterladen
  • Anwendungsbeispiele
    • Scannen
      • Docker-Verwendung
      • Ausgabeformate
    • Regeln anzeigen
    • Benutzerdefinierte Schemas
  • HTTP-Servermodus
  • Kubesec-as-a-Service
  • Mitwirken
  • Hilfe erhalten
  • Changelog

🚀 Schnellstart

1. Manifest vorbereiten

Erstellen Sie eine Kubernetes-Ressourcendatei (z. B. kubesec-test.yaml), die gescannt werden soll. Für einen schnellen Test können Sie das folgende Pod-Manifest speichern:

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. Ersten Scan ausführen

Führen Sie einen Scan gegen Ihre Manifestdatei aus:

root@kitploit:~
# Mit dem lokalen Binary
kubesec scan kubesec-test.yaml

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

# Mit dem lokalen Binary und einer menschenlesbaren Tabellenausgabe
kubesec scan kubesec-test.yaml --format table

[!TIP] Um die Ergebnisse in einer menschenlesbaren Tabelle statt im standardmäßigen JSON-Format anzuzeigen, verwenden Sie das Flag --format table

kubesec gibt einen Sicherheits-Score und eine detaillierte Analyse Ihrer Ressource aus.

📦 Kubesec herunterladen

Kubesec ist verfügbar als:

  • Docker-Container-Image unter docker.io/kubesec/kubesec:v2
  • Linux/MacOS/Win-Binary (siehe neueste Version)
  • Kubernetes Admission Controller
  • Kubectl-Plugin

Oder installieren Sie den neuesten Commit von GitHub mit:

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

📖 Anwendungsbeispiele

Scannen

Scannen Sie Kubernetes-Ressourcen aus lokalen Dateien oder der Standardeingabe.

Kubesec kann mehrere YAML-Dokumente in einer einzigen Eingabedatei scannen oder Dokumente aus mehreren Dateien gleichzeitig scannen, sofern sie korrekt als mehrere, durch --- getrennte Dokumente formatiert sind.

root@kitploit:~
# Eine bestimmte lokale YAML-Datei scannen
kubesec scan ./deployment.yaml

# Aus der Standardeingabe scannen (JSON oder YAML)
cat file.json | kubesec scan -

# Ein gerendertes Helm-Chart scannen
helm template -f values.yaml ./chart | kubesec scan /dev/stdin

# Mehrere YAML-Dokumente scannen, getrennt durch '---'
{ cat test/asset/multi.yml; echo "---"; cat test/asset/critical.yml; } | kubesec scan -

Docker-Verwendung

Sie können dieselben Scan-Befehle mit dem offiziellen Docker-Image ausführen:

root@kitploit:~
# Eine Datei über Docker mit der Standardeingabe scannen
docker run -i kubesec/kubesec:v2 scan /dev/stdin < kubesec-test.yaml

Ausgabeformate

Kubesec unterstützt drei verschiedene Ausgabeformate, die über das Flag --format / -f angegeben werden: json (Standard), table und template. Außerdem können mehrere YAML-Dokumente in einer einzigen Eingabedatei gescannt werden.

root@kitploit:~
# JSON-Array-Ausgabe (Standardverhalten)
kubesec scan ./deployment.yaml --format json

# Menschenlesbare Tabellenausgabe
kubesec scan ./deployment.yaml --format table

# Ein benutzerdefiniertes Template für die Ausgabe verwenden
kubesec scan ./deployment.yaml --format template --template report-template.tmpl

Bestimmte Regeln scannen

root@kitploit:~
# Eine Regel
kubesec scan --rules CapSysAdmin kubesec-test.yaml

# Mehrere Regeln
kubesec scan --rules RunAsNonRoot,SeccompAny,ApparmorAny kubesec-test.yaml
Beispiel-JSON-Ausgabe
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
        },
        {
          // ...
        }
      ]
    }
  }
]
Beispiel-Tabellenausgabe

Tabellenausgabe

Regeln anzeigen

root@kitploit:~
# Alle Scan-Regeln mit ihren zugehörigen Punktzahlen anzeigen
kubesec print-rules

# Alle Scan-Regeln mit ihren zugehörigen Punktzahlen als Tabelle anzeigen
kubesec print-rules --format table

Beispiel-Regeln JSON-Ausgabe

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
  },
...
]

Benutzerdefinierte Schemas

Kubesec nutzt kubeconform (Dank an @yannh), um die zu scannenden Manifeste zu validieren. Das bedeutet, dass die Angabe anderer Schema-Speicherorte den Regeln folgt, die im kubeconform-README beschrieben sind.

root@kitploit:~
# Verwendet das neueste Schema von upstream
# Das Schema wird abgerufen von: https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master-standalone-strict/pod-v1.json
kubesec scan ./pod.yaml

# Eine bestimmte Schema-Version von upstream verwenden (Format x.y.z ohne v-Präfix)
# Das Schema wird abgerufen von: 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

# Eine bestimmte Schema-Version in einer abgeschotteten Umgebung über HTTP verwenden
# Das Schema wird abgerufen von: `https://host.server/v<version>-standalone-strict/pod-v1.json`
kubesec scan ./deployment.yaml --kubernetes-version <version> --schema-location https://host.server

# Eine bestimmte Schema-Version in einer abgeschotteten Umgebung mit lokalen Dateien verwenden
# Das Schema wird gelesen von: `/opt/schemas/v<version>-standalone-strict/pod-v1.json`
kubesec scan ./deployment.yaml --kubernetes-version <version> --schema-location /opt/schemas

Hinweis: Um externe Netzwerkaufrufe zu begrenzen und die Verwendung in abgeschotteten Umgebungen zu ermöglichen, enthält das kubesec-Image eingebettete Schemas. Wenn Sie den Speicherort des Schemas ändern möchten, müssen Sie die Umgebungsvariablen K8S_SCHEMA_VER und SCHEMA_LOCATION zur Laufzeit ändern.

HTTP-Servermodus

Kubesec enthält einen gebündelten HTTP-Server, den Sie lokal oder in einem Container ausführen können, um Scan-Anfragen über das Netzwerk anzunehmen.

CLI-Verwendung

root@kitploit:~
# HTTP-Server im Hintergrund auf Port 8080 starten
kubesec http 8080 &

# Eine Datei per POST an den laufenden Server senden
curl -sSX POST --data-binary @deployment.yaml http://localhost:8080/scan

# Hintergrundserver stoppen, wenn er fertig ist
kill %

Docker-Verwendung

root@kitploit:~
# HTTP-Server mit Docker starten
docker run -d -p 8080:8080 kubesec/kubesec:v2 http 8080

# Eine Datei per POST an den laufenden Server senden
curl -sSX POST --data-binary @deployment.yaml http://localhost:8080/scan

Vergessen Sie nicht, den Server zu stoppen.

Kubesec-as-a-Service

Kubesec ist auch per HTTPS unter v2.kubesec.io/scan verfügbar.

Übermitteln Sie kein sensibles YAML an diesen öffentlichen Dienst.

Der Dienst wird nach bestem Bemühen und in gutem Glauben betrieben.

root@kitploit:~
# Ein Manifest direkt an die gehostete v2-API übermitteln
curl -sSX POST --data-binary @"deployment.yaml" https://v2.kubesec.io/scan

# Die API-Ausgabe mit jq parsen und einen Exit-Code ungleich Null zurückgeben, wenn der Score <= 10 ist
curl -sSX POST --data-binary @"deployment.yaml" https://v2.kubesec.io/scan | jq --exit-status '.score > 10'

# Den Abfrageparameter "rule" verwenden, um nur bestimmte Regeln zu scannen (mehrere werden unterstützt)
curl -sSX POST --data-binary @test/asset/score-0-cap-sys-admin.yml "http://localhost:8080/scan?rule=SeccompAny&rule=ApparmorAny"

Sie können auch eine Bash-Funktion definieren, z. B.:

root@kitploit:~
# Eine BASH-Funktion definieren
$ 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
}


# Eine Kubernetes-Ressource an v2.kubesec.io/scan senden
$ kubesec ./deployment.yml

# Exit-Code ungleich Null zurückgeben, wenn der Score nicht größer als 10 ist
$ kubesec ./score-9-deployment.yml | jq --exit-status '.score > 10' >/dev/null
# Statuscode 1

Mitwirken

Weitere Informationen finden Sie in CONTRIBUTING.md.

Hilfe erhalten

Wenn Sie Fragen zu Kubesec und Kubernetes-Sicherheit haben:

  • Lesen Sie die Kubesec-Dokumentation
  • Kontaktieren Sie uns auf Twitter unter @sublimino oder @controlplaneio
  • Melden Sie ein Issue

Ihr Feedback ist jederzeit willkommen!


Mit ❤ gemacht von ControlPlane

Tool herunterladen