Überblick
KubeLinter ist ein Open Source Tool zur statischen Analyse – auch als Lint oder Linter bezeichnet, das Fehlkonfigurationen und Programmierfehler in Kubernetes Deployments identifiziert. Das Befehlszeilen-Tool analysiert automatisch YAML-Dateien und Helm Charts anhand von bewährten Kubernetes-Konfigurations- und Sicherheitsverfahren.
KubeLinter in Aktion
In dieser praktischen Demonstration erfahren Sie, wie das Befehlszeilen-Tool funktioniert.
Warum KubeLinter?
Kubernetes – auch bekannt als K8s – ist bekannt für seine Fähigkeit, containerisierte Anwendungen bereitzustellen, zu verwalten und zu skalieren, aber nicht für seine Fähigkeit, Container zu sichern. Auch Kubernetes-Konfigurationen werden in der Regel in YAML-Dateien definiert, die zwar für den Menschen lesbar sind, aber dennoch schwierig zu verstehen sind, und gültige Konfigurationen in großem Umfang erzeugen. Mit statischer Validierung allein lassen sich in komplexem YAML nicht ohne Weiteres Fehler und Verstöße erkennen, wodurch Sicherheitsprobleme aufgedeckt werden können.
Und Sicherheit ist unerlässlich.
Laut dem Red Hat Bericht zur Kubernetes-Einführung, Sicherheit und zu Markttrends für 2021 gaben mehr als die Hälfte der Befragten an, dass sie das Deployment von Kubernetes-Anwendungen in die Produktion aufgrund von Sicherheitsbedenken verzögert haben, wobei 94 % im Jahr 2020 mindestens einen Kubernetes-bezogenen Sicherheitsvorfall erlebt haben. Diese waren in erster Linie auf menschliches Versagen zurückzuführen, wobei manuell eingegebene Fehlkonfigurationen zu etwa 67 % der gemeldeten Fälle beitrugen.
Hier setzt KubeLinter an.
Das Lint Tool – das Ende 2020 von StackRox entwickelt wurde und Anfang 2021 von Red Hat übernommen wurde – wurde speziell zur Bekämpfung von Sicherheitsfehlern und zur Verbesserung der genauen Konfiguration von Kubernetes-Deployments zu Beginn des Entwicklungsprozesses entwickelt. Es führt Überprüfungen von Konfigurationsdateien durch und kann mit CI-Systemen (Continuous Integration) verwendet werden, um den Prozess der Aktualisierung von YAML-Dateien und Helm Charts zu vereinfachen und gleichzeitig bewährte DevSecOps-Verfahren anzuwenden.
Als OpenSource Tool, das unter der Apache 2.0-Lizenz zur Verfügung steht, ermöglicht KubeLinter auch Nutzern aus der gesamten OpenSource Community, zum Projekt beizutragen.
Wie funktioniert KubeLinter?
Zur Prüfung der korrekten Einrichtung von Kubernetes-Clustern und der Behebung von Programmierfehlern vor dem Deployment nimmt KubeLinter einen Pfad zu einem Diagramm und führt eine Reihe von Tests durch, um zu prüfen, ob das Diagramm korrekt aufgebaut und fehlerfrei ist. Es sendet dann Lint-Fehlermeldungen für alle gefundenen Fehler, die die Installation des Diagramms zum Scheitern bringen, oder eine Warnmeldung für alles, was nicht mit den bewährten Sicherheitsverfahren übereinstimmt.
KubeLinter wurde außerdem so konzipiert , dass es einfach zu bedienen ist. Es enthält 40 eingebaute Lint-Checks für gängige K8s-Fehlkonfigurationen wie das Ausführen eines Containers als Nutzer, nicht übereinstimmende Selectors und das Speichern sensibler Daten ausschließlich in Secrets. Es unterstützt die Konfiguration benutzerdefinierter Kontrollen und ermöglicht es den Nutzern, Konfigurationen wie Code zu behandeln, so dass Sicherheit viel früher in den Prozess der Anwendungsentwicklung integriert werden kann.
Konfiguration von KubeLinter
KubeLinter ist in hohem Maße konfigurierbar. Nutzer können ihre eigenen benutzerdefinierten Regeln mit minimalen Änderungen an den Workflows und nahezu sofortigem Feedback zu Fehlkonfigurationen und Sicherheitsverstößen erstellen, aktivieren und deaktivieren.
KubeLinter kann zu jedem CI/CD-Tool (Continuous Integration/Continuous Delivery) hinzugefügt werden – einschließlich GitHub Action, Jenkins, CircleCI und Travis CI – und kann automatisch auf Fehler in den Anwendungskonfigurationen prüfen und diese identifizieren. Dies hilft den Entwicklern bei der Behebung von Problemen und sie können Probleme in der gesamten Produktions-Pipeline automatisch erkennen.
Die Standardprüfungen von KubeLinter sind ebenfalls auf die Sicherheit ausgerichtet, so dass die Nutzer manuell zustimmen müssen, wenn sie Kubernetes auf eine unsichere Art konfigurieren möchten.
Das Herunterladen und Installieren von KubeLinter dauert nur ein paar Minuten. Es wurde als eigenständige Binärdatei in der für Menschen lesbaren Programmiersprache Go entwickelt, ist mit kubectl vergleichbar und wird mit einigen derselben Pakete erstellt.
Zur Installation von KubeLinter können Sie die Befehlszeilen-Schnittstelle lokal mit Go erstellen, vorgefertigte Docker-Container verwenden, mit Homebrew installieren oder selbst aus dem Quellcode erstellen. Nach der Installation verweisen Sie das Tool auf Ihre Helm Charts und Kubernetes YAML-Dateien, um umgehend Ergebnisse zu erhalten.
Da es sich um ein Open Source Tool handelt, können und sollten Entwickler mit Änderungen an Elementen des KubeLinters rechnen, je mehr es weiterentwickelt wird. Die Änderungen können Konfigurationsdateiformate, Flags und die Verwendung von Befehlen umfassen.