Skip to main content

Snyk bei Snyk: Kubernetes-RBAC für Snyks Entwickler ermöglichen

Artikel von

14. April 2021

0 Min. Lesezeit

Wie Onkel Ben einst sagte: „Mit großer Macht kommt große Verantwortung.“ Das gilt auch für die Kubernetes-API. Sie ist sehr leistungsfähig und ermöglicht es Ihnen, Erstaunliches zu entwickeln. Doch das hat seinen Preis: Auch böswillige Nutzer können die API für schädliche Zwecke einsetzen.

Hier kommt Kubernetes-RBAC (rollenbasierte Zugriffskontrolle) ins Spiel: Damit können Sie die API kontrolliert nutzen, indem Sie nach dem Prinzip der geringsten Rechte nur die erforderlichen Berechtigungen vergeben.

Kubernetes-RBAC-Diagramm mit Cluster-Rollen, Rollenbindungen, Namespaces, Benutzern, Gruppen und Servicekonten.

Mit Kubernetes können Nutzer Rollen innerhalb von Namespaces und Cluster-Rollen außerhalb von Namespaces definieren.

Damit wird das Problem jedoch nur verlagert: Jetzt brauchen wir gute Prozesse für RBAC-Ressourcen, denn ein einfacher RBAC-Fehler könnte schwerwiegende Sicherheitsfolgen haben. Stellen Sie sich vor, ein Entwickler weist dem standardmäßigen Servicekonto im standardmäßigen Namespace „versehentlich“ die Rolle des Cluster-Administrators zu. Welch ein Grauen!

Ein Feuerwehrmann in Schutzkleidung steht neben einem brennenden Container, umgeben von dichtem schwarzem Rauch und Flammen.

Foto von https://unsplash.com/@arnykoor

Der vorgezeichnete Weg zu mehr Kubernetes-Sicherheit

Idealerweise möchten wir allen Entwicklern ermöglichen, RBAC-Berechtigungen nach ihren Vorstellungen zu erstellen und gleichzeitig Schutzmaßnahmen einzurichten, die unsichere Vorgehensweisen verhindern. Eine Möglichkeit dafür ist, bei jeder Änderung mit RBAC-Ressourcen eine Codeüberprüfung durch AppSec vorzuschreiben. Das könnte zwar funktionieren, hat aber einige Nachteile:

  • AppSec wird zum Engpass und bremst die Entwickler aus.

  • Sicherheit wird zu einer „Blackbox“, die nur AppSec versteht, da keine Richtlinien veröffentlicht werden, anhand derer sich erkennen lässt, worauf AppSec bei der Überprüfung solcher Änderungen achtet.

  • Wir verstärken die Silos und hindern Entwickler daran, Verantwortung für Sicherheit zu übernehmen. Damit verschärft sich das Problem, dass AppSec zum Engpass wird und Entwickler ausbremst.

Die Kubernetes-RBAC-Sicherheitscheckliste

Bei Snyk standen wir vor ähnlichen Herausforderungen. Wir wollten unsere Entwickler befähigen, die Kubernetes-API zu nutzen, ohne sie auszubremsen. Zunächst stellten wir eine Liste mit Sicherheitsanforderungen für RBAC-Regeln zusammen. Sie ist recht kurz und orientiert sich hauptsächlich an den CIS Kubernetes-Benchmarks:

  • Keine Platzhalter bei Ressourcen oder Verben

  • Keine Verwendung integrierter Regeln, da sie zu viele Berechtigungen gewähren

  • Keine Bindungen an Servicekonten im standardmäßigen Namespace (der leer sein sollte) oder im kube-system-Namespace (in dem sensible Workloads ausgeführt werden)

  • Keine Bindung an das standardmäßige Servicekonto

  • Keine Verwendung gefährlicher Berechtigungen, etwa zum Erstellen von Pods oder Lesen von Secrets

Nachdem wir die Liste zusammengestellt hatten, konnten wir damit einiges anfangen:

  • Wir veröffentlichten sie als interne Richtlinie und verlangten, dass alle RBAC-Objekte diese Anforderungen erfüllen. So waren die Kriterien keine „Blackbox“ mehr.

  • Wir baten unsere Entwickler und Security Engineers, Verstöße gegen diese Liste als Sicherheitsrisiko zu dokumentieren und AppSec darüber zu informieren.

  • Wir holten Feedback ein und luden alle Entwickler ein, sich an der Liste zu beteiligen und sie zu aktualisieren, um Silos aufzubrechen.

  • AUTOMATISIERUNG. Schließlich möchten wir Tests so einfach wie möglich machen, sobald eine Liste vorliegt.

Automatisierte Prüfung von Kubernetes-Konfigurationen mit Snyk IaC

Ende 2020 kündigte Snyk ein neues Produkt an: Snyk Infrastructure as Code (Snyk IaC). Snyk IaC enthält einen integrierten Regelsatz, mit dem sich IaC-Code prüfen lässt, darunter auch Kubernetes-Manifeste (und Terraform – aber das ist Thema eines anderen Blogbeitrags). Einer der Vorteile, bei Snyk zu arbeiten, ist der frühzeitige Zugriff auf neue Funktionen – und noch besser: die Möglichkeit, zum Produkt beizutragen.

Nachdem wir unsere Liste zusammengestellt hatten, wandten wir uns an das Snyk IaC-Team und besprachen unsere Kubernetes-RBAC-Checkliste. Und voilà! Snyk IaC erhielt fünf neue Prüfungen, mit denen wir unsere Sicherheitsprüfungen automatisieren und verhindern können, dass AppSec zum Engpass wird.

Snyk Infrastructure as Code-Einstellungen mit aktivierter Erkennung von Konfigurationsdateien und Kubernetes-Schweregradeinstellungen für Probleme mit Rollen und RoleBindings.

IaC-Sicherheit für Snyks Entwickler so einfach wie möglich machen

Snyk IaC kann Scans über GitHub Actions ausführen und Ergebnisse im Sarif-Format ausgeben, das sich in GitHub Security integrieren lässt. Wir wollten noch einen Schritt weiter gehen und Verstöße direkt in unseren PRs anzeigen – was Snyk IaC (noch) nicht kann. Unsere AppSec-Gruppe hat dafür eine eigene GitHub-Integration entwickelt. So werden Änderungen an unseren Kubernetes-Manifestdateien beim Commit automatisch mit Snyk gescannt. Bei einem Verstoß erhält der Entwickler eine hilfreiche Warnung im PR:

Kubernetes-YAML-Pull-Request mit Warnhinweis, dass ein RoleBinding das Standard-Servicekonto verwendet.

Jetzt können alle unsere Entwickler RBAC-Änderungen vornehmen, ohne dafür erst AppSec hinzuziehen zu müssen. Und AppSec kann beruhigt sein, denn Snyk passt auf uns auf.

Möchten Sie etwas Ähnliches für Ihr Team einrichten? Sehen Sie sich hier das Beispiel-Repository an und stellen Sie sicher, dass Sie ein Snyk-Konto haben – mit IaC können Sie kostenlos loslegen!

Sichern Sie Ihre Infrastruktur an der Quelle

Snyk automatisiert die IaC-Sicherheit und Compliance in Workflows und erkennt abweichende sowie fehlende Ressourcen.

Gepostet in: