Kubernetes RBAC ist eine effiziente rollenbasierte Autorisierungsmethode, die verwendet wird, um granularen Zugriff auf Ressourcen in einem Kubernetes-Cluster bereitzustellen.
Wenn es jedoch nicht richtig eingesetzt wird, kann es leicht zu einer Compliance-Katastrophe kommen. Aus diesem Grund benötigen wir RBAC-Tools, um riskante Berechtigungen in Kubernetes zu prüfen und zu lokalisieren.
In diesem Artikel werden wir erörtern, was Kubernetes RBAC ist, warum es wichtig ist, riskante Berechtigungen zu prüfen, und die Tools entdecken, die uns am besten bei der Prüfung riskanter Berechtigungen helfen können!
Was ist RBAC?

Rollenbasierte Zugriffskontrolle (RBAC) ist eine Sicherheitdienst Mechanismus, bei dem jede Zugriffsberechtigung auf Rollen basiert, die einem Benutzer zugewiesen sind. 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 andere Möglichkeiten, Benutzer in Kubernetes zu autorisieren, wie z. B. ABAC (attributbasierte Zugriffskontrolle), über Webhook oder Knotenautorisierung, aber der am weitesten verbreitete und native Autorisierungsmechanismus, der in der stabilen Version verfügbar ist, ist RBAC.
Praktisch die gesamte Interaktion mit den Ressourcen erfolgt über seinen API-Server, was bedeutet, dass sich letztendlich alles darauf beschränkt, HTTP-Anfragen an den besagten Server zu stellen (ein wesentlicher Bestandteil des/der Master-Knoten/s oder des Control Panels).
Kubernetes verfügt über vier RBAC-bezogene Objekte, die kombiniert werden können, um Zugriffsberechtigungen für Clusterressourcen festzulegen. Dies sind Role, ClusterRole, RoleBinding und ClusterRoleBinding. Um mit diesen Objekten zu arbeiten, muss wie mit allen Kubernetes-Objekten die Kubernetes-API verwendet werden.
Rollen in Kubernetes
In Kubernetes, gibt es zwei Arten von Rollen namens Role und ClusterRole. Der größte Unterschied zwischen den beiden besteht darin, dass die Rolle zu einem konkreten Namespace gehört, während die ClusterRole global für den Cluster ist. Im Fall von ClusterRole muss der Name also eindeutig sein, da er zum Cluster gehört. Im Fall einer Rolle können zwei verschiedene Namespaces eine Rolle mit demselben Namen haben.
Ein weiterer erwähnenswerter Unterschied besteht darin, dass Role den Zugriff auf Ressourcen im selben Namespace ermöglicht, während ClusterRole zusätzlich zum Zugriff auf Ressourcen in jedem Namespace auch Zugriff auf Ressourcen im selben Namespace wie Knoten gewähren kann unter anderen.
Nachdem 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. Dazu würden wir ein Dienstkonto verwenden.
Schließlich brauchen wir den „Klebstoff“, der eine Rolle an ein Konto (Benutzer oder Dienst) oder eine Gruppe bindet. Dafür gibt es in Kubernetes zwei Ressourcen: RoleBinding und ClusterRoleBinding. RoleBinding kann auf eine Rolle verweisen, die sich im selben Namespace befindet, während ClusterRoleBinding auf jede Rolle in jedem Namespace verweisen und Berechtigungen global zuweisen kann.
Als Hinweis erlauben die Berechtigungen nur den Zugriff auf Ressourcen, da „standardmäßig alles verweigert“ wird und es möglich ist, demselben Benutzer mehrere Rollen zuzuweisen
Die einzige Voraussetzung für die Verwendung von RBAC ist, dass es auf unserem Cluster mit dem „–authorization-mode=RBAC
" Möglichkeit. Wir können dies mit dem Befehl überprüfen:
kubectl api-versions
Was sind riskante RBAC-Berechtigungen und wie können sie behoben werden?
Jede Berechtigung, die unbefugten Zugriff auf die Pod-Ressourcen erlaubt oder erlauben kann, wird als riskante Berechtigung betrachtet. Wenn ein Benutzer beispielsweise eine Bearbeitungsberechtigung 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.
Wenn alte Berechtigungen deaktiviert bleiben, können einige Benutzer auf Ressourcen zugreifen, die sie nicht mehr benötigen.
Es ist schwierig und zeitaufwändig, solch riskante Berechtigungen manuell zu finden, wenn Sie eine große Anzahl von Rollen haben. Um diesen Prozess durchzuführen, gibt es eine Reihe von Audit-Tools für RBAC-Berechtigungen, mit denen Sie Ihren gesamten Cluster scannen können, um riskante Berechtigungen zu finden. Es ist auch wichtig zu verstehen, dass die Effektivität von RBAC von einer aktuellen RBAC-Richtlinie abhängt, die wiederum eine regelmäßige Berechtigungsprüfung erfordert.
Im Folgenden sind einige der besten RBAC-Tools zum Prüfen von Berechtigungen basierend auf verschiedenen Sprachen und Benutzeroberflächen aufgeführt.
KubiScan

KubiScan ist ein Python-basiertes RBAC-Tool zum Scannen riskanter Berechtigungen in einem Kubernetes-Cluster. Das Tool muss innerhalb des Master-Knotens ausgeführt werden und kann dann direkt vom Terminal ausgeführt werden, um eine Liste riskanter Berechtigungen zu erhalten. Kubiscan kann verwendet werden, um riskante Rollen, Clusterrollen, Rollenbindungen, Clusterbindungen, Subjekte, Pods und sogar Container zu finden.
Krane
Krane von Appvia ist ein Ruby-basiertes statisches Analyse- und Visualisierungstool für Kubernetes RBAC. Es kann sowohl lokal als CLI als auch in einer CI/CD-Pipeline ausgeführt werden. Darüber hinaus kann es auch als eigenständiger Dienst innerhalb eines Kubernetes-Containers arbeiten. Krane bietet die Funktion zum Analysieren von RBAC-Berechtigungen durch facettierte Baum- und Diagrammnetzwerkansichten. Durch seine Slack-Integration gibt es auch Warnungen für riskante Berechtigungen aus.

RBAC Tool
RBAC-Tool von InsightCloudSec ist ein eigenständiges Tool zur Berechtigungsprüfung, das mit Go erstellt wurde. Es ermöglicht Ihnen nicht nur, riskante RBAC-Berechtigungen zu scannen und hervorzuheben, sondern Sie können auch RBAC-Richtlinien aus der Berechtigungsprüfung über die Auditgen-Funktion generieren. Das RBAC-Tool bietet auch die Funktion der RBAC-Visualisierung.
Fairwinds
Fairwinds-Einblick ist ein eigenständiges Tool, das eine Reihe von Kubernetes-Sicherheits- und Compliance-Funktionen bereitstellt. Die Funktion zur Richtliniendurchsetzung ermöglicht es Ihnen, RBAC-Berechtigungen zu prüfen und sie anhand von Standard- und benutzerdefinierten Richtlinien zu scannen. Fairwinds bietet eine On-Demand-Demo an.

Permission Manager
Erlaubnis-Manager by Signup ist ein Javascript-basiertes Kubernetes-Berechtigungsverwaltungstool. Es bietet eine einfache und initiative Möglichkeit, Benutzerberechtigungen innerhalb eines Kubernetes-Clusters zu verwalten. Permission Manager bietet auch eine Unternehmensedition des Tools, mit der Sie grundlegende RBAC-Berechtigungsprüfungen durchführen können.
Fazit
Kubernetes RBAC ist eine effiziente Möglichkeit, den Zugriff auf Ressourcen in einem Kubernetes-Cluster zu verwalten. Wenn es jedoch nicht richtig implementiert wird, kann es zu Sicherheits- und Compliance-Problemen kommen. Dies kann jedoch vermieden werden, indem Berechtigungen durch RBAC-Überwachungstools kontinuierlich überprüft werden.
Dies könnte Sie auch interessieren Best Practices für Kubernetes.