
kubeaudit hilft dir, deine Kubernetes-Cluster anhand gängiger Sicherheitskontrollen zu prüfen.
Es ist jetzt eine Voraussetzung für Cluster, Kubernetes >=1.19 auszuführen.
Überschreibungs-Labels mit nicht registrierten
kubernetes.io-Annotationen werden veraltet. Es wird bald erforderlich sein, stattdessenkubeaudit.iozu verwenden.
Siehe diese Diskussion für weiteren Kontext.
Kubeaudit ist für die Einstellung bis Oktober 2024 geplant.
Wir suchen aktiv nach Betreuern, die daran interessiert sind, die Verantwortung für dieses Projekt zu übernehmen. Wenn Sie Leidenschaft für die Weiterentwicklung und Wartung haben, kontaktieren Sie uns bitte.
Für Benutzer, die nach Alternativen suchen, empfehlen wir den Umstieg auf Kubebench, das ähnliche Funktionalitäten bietet und aktiv gewartet wird.
Vielen Dank an die Community für Ihre Beiträge und Unterstützung.
kubeaudit ist ein Kommandozeilenwerkzeug und ein Go-Paket zur Überprüfung von Kubernetes-Clustern auf verschiedene Sicherheitsbedenken, wie z. B.:
TL;DR. kubeaudit stellt sicher, dass Sie sichere Container bereitstellen!
Um kubeaudit als Go-Paket zu verwenden, siehe die Paketdokumentation.
Der Rest dieser README konzentriert sich darauf, wie man kubeaudit als Kommandozeilenwerkzeug verwendet.
brew install kubeaudit
Kubeaudit hat offizielle, stabile und geprüfte Veröffentlichungen: Offizielle Veröffentlichungen
Der Hauptzweig kann neuere Funktionen enthalten als die stabilen Veröffentlichungen. Wenn Sie eine neuere Funktion benötigen, die noch nicht in einer Veröffentlichung enthalten ist, stellen Sie sicher, dass Sie das aktuelle Go verwenden, und führen Sie Folgendes aus:
go get -v github.com/Shopify/kubeaudit
Beginnen Sie mit der Nutzung von kubeaudit mit dem Schnellstart oder sehen Sie sich alle unterstützten Befehle an.
Voraussetzung: kubectl v1.12.0 oder höher
Mit kubectl v1.12.0, das die einfache Pluginfähigkeit externer Funktionen einführte, kann kubeaudit als kubectl audit aufgerufen werden, indem
make plugin ausgeführt wird und $GOPATH/bin in Ihrem Pfad verfügbar ist.oder
kubectl-audit umbenannt wird und im Pfad verfügbar ist.Wir veröffentlichen keine Images mehr auf Docker Hub (seit Docker Hub die Free Team-Organisationen eingestellt hat). Vorläufig sind alte Images noch verfügbar, könnten aber jederzeit nicht mehr verfügbar sein. Wir werden bald damit beginnen, Images in der Github Container Registry zu veröffentlichen.
Um kubeaudit als Job in Ihrem Cluster auszuführen, siehe Ausführen von kubeaudit in einem Cluster.
kubeaudit hat drei Modi:
Wenn eine Kubernetes-Manifestdatei mit dem Flag -f/--manifest angegeben wird, überprüft kubeaudit die Manifestdatei.
Beispielbefehl:
kubeaudit all -f "/path/to/manifest.yml"
Beispielausgabe:
$ kubeaudit all -f "internal/test/fixtures/all_resources/deployment-apps-v1.yml"
---------------- Results for ---------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
namespace: deployment-apps-v1
--------------------------------------------
-- [error] AppArmorAnnotationMissing
Message: AppArmor annotation missing. The annotation 'container.apparmor.security.beta.kubernetes.io/container' should be added.
Metadata:
Container: container
MissingAnnotation: container.apparmor.security.beta.kubernetes.io/container
-- [error] AutomountServiceAccountTokenTrueAndDefaultSA
Message: Default service account with token mounted. automountServiceAccountToken should be set to 'false' or a non-default service account should be used.
-- [error] CapabilityShouldDropAll
Message: Capability not set to ALL. Ideally, you should drop ALL capabilities and add the specific ones you need to the add list.
Metadata:
Container: container
Capability: AUDIT_WRITE
...
Wenn keine Fehler mit einer bestimmten Mindestschwere gefunden werden, wird Folgendes zurückgegeben:
All checks completed. 0 high-risk vulnerabilities found
Der Manifest-Modus unterstützt auch die automatische Behebung aller Sicherheitsprobleme mit dem Befehl autofix:
kubeaudit autofix -f "/path/to/manifest.yml"
Um das korrigierte Manifest in eine neue Datei zu schreiben, anstatt die Quelldatei zu ändern, verwenden Sie das Flag -o/--output.
kubeaudit autofix -f "/path/to/manifest.yml" -o "/path/to/fixed"
Um ein Manifest basierend auf benutzerdefinierten Regeln zu korrigieren, die in einer kubeaudit-Konfigurationsdatei angegeben sind, verwenden Sie das Flag -k/--kconfig.
kubeaudit autofix -k "/path/to/kubeaudit-config.yml" -f "/path/to/manifest.yml" -o "/path/to/fixed"
Kubeaudit kann erkennen, ob es in einem Container in einem Cluster ausgeführt wird. Wenn ja, wird versucht, alle Kubernetes-Ressourcen in diesem Cluster zu überprüfen:
kubeaudit all
Kubeaudit versucht, mithilfe der lokalen Kubeconfig-Datei ($HOME/.kube/config) eine Verbindung zu einem Cluster herzustellen. Ein anderer Kubeconfig-Pfad kann mit dem Flag --kubeconfig angegeben werden. Um einen Kontext der Kubeconfig anzugeben, verwenden Sie das Flag -c/--context.
kubeaudit all --kubeconfig "/path/to/config" --context my_cluster
Für weitere Informationen zu Kubernetes-Konfigurationsdateien siehe https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
Kubeaudit erzeugt Ergebnisse mit drei Schweregraden:
Error: Ein Sicherheitsproblem oder eine ungültige Kubernetes-KonfigurationWarning: Eine Empfehlung zu Best PracticesInfo: Nur zur Information, kein Handlungsbedarf. Dazu gehören Ergebnisse, die überschrieben wurden.Der minimale Schweregrad kann mit dem Flag --minSeverity/-m festgelegt werden.
Standardmäßig gibt kubeaudit Ergebnisse in menschenlesbarer Form aus. Wenn die Ausgabe weiterverarbeitet werden soll, kann sie mit dem Flag --format json auf JSON gesetzt werden. Für die Ausgabe als Logs (der vorherige Standard) verwenden Sie --format logrus. Einige Ausgabeformate enthalten Farben, um die Ergebnisse im Terminal leichter lesbar zu machen. Um Farben zu deaktivieren (z. B. wenn Sie die Ausgabe in eine Textdatei senden), können Sie das Flag --no-color verwenden.