Kubernetes RBAC ist ein effizientes rollenbasiertes Autorisierungsverfahren, das für einen granularen Zugriff auf Ressourcen in einem Kubernetes-Cluster verwendet wird.

Wenn sie jedoch nicht richtig eingesetzt wird, kann sie leicht zu einer Compliance-Katastrophe führen. Deshalb brauchen wir RBAC-Tools, um riskante Berechtigungen in Kubernetes zu prüfen und zu finden.

In diesem Artikel erfahren Sie, was RBAC in Kubernetes ist, warum es wichtig ist, riskante Berechtigungen zu prüfen, und welche Tools uns bei der Prüfung riskanter Berechtigungen am besten helfen können!

Was ist RBAC?

Die rollenbasierte Zugriffskontrolle (RBAC) ist ein Sicherheitsmechanismus, bei dem jede Zugriffsberechtigung auf Rollen basiert, die einem Benutzer zugewiesen werden. Mit diesem System ist es also möglich, den Zugriff auf die Ressourcen eines Kubernetes-Clusters (Namespaces, Pods, Jobs) auf Anwendungen oder Benutzer zu beschränken.

In Kubernetes können RBAC-Richtlinien verwendet werden, um die Zugriffsrechte eines Systembenutzers (Benutzer oder Gruppe) sowie die von Dienstkonten (Dienstkonto) zu verwalten.

Es gibt noch andere Möglichkeiten, Benutzer in Kubernetes zu autorisieren, z.B. ABAC (Attribut-basierte Zugriffskontrolle), über Webhook oder Node Authorization, aber der am weitesten verbreitete und in der stabilen Version verfügbare Autorisierungsmechanismus ist RBAC.

Praktisch die gesamte Interaktion mit den Ressourcen erfolgt über seinen API-Server, was bedeutet, dass sich letztlich alles darauf beschränkt, HTTP-Anfragen an den besagten Server zu stellen (eine wesentliche Komponente des/der Master Nodes oder des Control Panels).

Kubernetes verfügt über vier RBAC-bezogene Objekte, die kombiniert werden können, um Zugriffsrechte für Cluster-Ressourcen festzulegen. Diese sind Role, ClusterRole, RoleBinding und ClusterRoleBinding. Um mit diesen Objekten zu arbeiten, muss wie bei allen Kubernetes-Objekten die Kubernetes-API verwendet werden.

Rollen in Kubernetes

In Kubernetes gibt es zwei Arten von Rollen, die Role und die ClusterRole. Der größte Unterschied zwischen den beiden ist, dass die Role zu einem konkreten Namensraum gehört, während die ClusterRole global für den Cluster ist. Im Falle der ClusterRole muss ihr Name also eindeutig sein, da sie zum Cluster gehört. Im Falle einer Role können zwei verschiedene Namensräume eine Role mit demselben Namen haben.

Ein weiterer erwähnenswerter Unterschied ist, dass Role den Zugriff auf Ressourcen innerhalb desselben Namensraums erlaubt, während ClusterRole nicht nur den Zugriff auf Ressourcen in einem beliebigen Namensraum, sondern auch auf Ressourcen im selben Namensraum, wie z.B. Knoten, erlauben kann.

Da wir nun die Arten von Rollen kennen, müssen wir als nächstes wissen, wem wir diese Rollen zuweisen können. In diesem Fall haben wir Benutzerkonten, Dienstkonten und Gruppen.

Benutzerkonten sind Konten, die einem bestimmten Benutzer zugewiesen sind, während Dienstkonten von Prozessen verwendet werden. Stellen Sie sich beispielsweise vor, dass unsere Anwendung programmgesteuert auf Ressourcen aus dem Cluster zugreifen muss, dann würden wir dafür ein Dienstkonto verwenden.

Schließlich brauchen wir noch den “Klebstoff”, der eine Rolle an ein Konto (Benutzer oder Dienst) oder eine Gruppe bindet. Hierfür gibt es in Kubernetes zwei Ressourcen: RoleBinding und ClusterRoleBinding. RoleBinding kann auf eine Rolle verweisen, die sich im gleichen Namensraum befindet, während ClusterRoleBinding auf eine beliebige Rolle in einem beliebigen Namensraum verweisen und Berechtigungen global zuweisen kann.

Beachten Sie, dass die Berechtigungen nur den Zugriff auf Ressourcen erlauben, denn “standardmäßig wird alles verweigert” und es ist möglich, demselben Benutzer mehrere Rollen zuzuweisen

Die einzige Voraussetzung für die Verwendung von RBAC ist, dass es auf unserem Cluster mit der Option"-authorization-mode=RBAC” aktiviert ist. Wir können dies mit dem Befehl überprüfen:

kubectl api-versions

Was sind riskante RBAC-Berechtigungen und wie kann man sie korrigieren?

Jede Berechtigung, die unbefugten Zugriff auf die Pod-Ressourcen erlaubt oder erlauben kann, gilt als riskante Berechtigung. Wenn ein Benutzer beispielsweise die Berechtigung zum Bearbeiten hat, kann er seine eigene Rolle bearbeiten und auf Ressourcen zugreifen, auf die er sonst nicht zugreifen darf. Dies kann zu einem Compliance-Problem führen.

Ebenso können einige Benutzer auf Ressourcen zugreifen, die sie nicht mehr benötigen, wenn alte Berechtigungen nicht markiert sind.

Bei einer großen Anzahl von Rollen ist es schwierig und zeitaufwändig, solche riskanten Berechtigungen manuell zu finden. Um diesen Prozess zu erleichtern, gibt es eine Reihe von RBAC-Berechtigungs-Audit-Tools, mit denen Sie Ihren gesamten Cluster auf riskante Berechtigungen überprüfen können. Es ist auch wichtig zu verstehen, dass die Effektivität von RBAC von einer aktuellen RBAC-Richtlinie abhängt, die wiederum eine regelmäßige Überprüfung der Berechtigungen erfordert.

Nachfolgend finden Sie einige der besten RBAC-Tools zur Überprüfung von Berechtigungen auf der Grundlage verschiedener Sprachen und Benutzeroberflächen.

KubiScan

KubiScan ist ein Python-basiertes RBAC-Tool zum Scannen riskanter Berechtigungen in einem Kubernetes-Cluster. Das Tool muss auf dem Master-Knoten ausgeführt werden und kann dann direkt vom Terminal aus gestartet werden, um eine Liste der riskanten Berechtigungen zu erhalten. Kubiscan kann verwendet werden, um riskante Rollen, ClusterRollen, RoleBindings, ClusterBindings, Subjects, Pods und sogar Container zu finden.

Krane

Krane von Appvia ist ein Ruby-basiertes Kubernetes RBAC-Tool zur statischen Analyse und Visualisierung. Es kann sowohl lokal als CLI als auch in einer CI/CD-Pipeline ausgeführt werden. Außerdem kann es auch als eigenständiger Dienst innerhalb eines Kubernetes-Containers arbeiten. Krane bietet die Möglichkeit, RBAC-Berechtigungen durch facettierte Baum- und Graphnetzwerkansichten zu analysieren. Über seine Slack-Integration gibt es außerdem Warnungen für riskante Berechtigungen aus.

RBAC-Werkzeug

RBAC Tool von InsightCloudSec ist ein eigenständiges Tool zur Überprüfung von Berechtigungen, das auf Go basiert. Es ermöglicht Ihnen nicht nur das Scannen und Hervorheben riskanter RBAC-Berechtigungen, sondern Sie können mit seiner Auditgen-Funktion auch RBAC-Richtlinien aus der Berechtigungsprüfung erstellen. Das RBAC-Tool bietet auch die Funktion der RBAC-Visualisierung.

Fairwinds

Fairwinds Insight ist ein eigenständiges Tool, das eine Reihe von Kubernetes-Sicherheits- und Compliance-Funktionen bietet. Mit seiner Funktion zur Durchsetzung von Richtlinien können Sie RBAC-Berechtigungen überprüfen und sie mit Standard- und benutzerdefinierten Richtlinien abgleichen. Fairwinds bietet eine On-Demand-Demo an.

Erlaubnis-Manager

Permission Manager von Signup ist ein Javascript-basiertes Tool zur Verwaltung von Kubernetes-Berechtigungen. Es bietet eine einfache und initiative Möglichkeit zur Verwaltung von Benutzerberechtigungen innerhalb eines Kubernetes-Clusters. Permission Manager bietet auch eine Enterprise Edition des Tools, mit der Sie grundlegende RBAC-Berechtigungsprüfungen durchführen können.

Fazit 👩‍💻

Kubernetes RBAC ist eine effiziente Methode zur Verwaltung des Zugriffs auf Ressourcen in einem Kubernetes-Cluster. Wenn es jedoch nicht richtig implementiert wird, kann es zu Sicherheits- und Compliance-Problemen führen. Dies lässt sich jedoch vermeiden, indem Sie die Berechtigungen mithilfe von RBAC-Auditing-Tools kontinuierlich überprüfen.

Das könnte Sie auch interessieren: Kubernetes Best Practices.