Zum Hauptinhalt springen

Autorisierung von Kubernetes

K8s-authz ist eine Kubernetes (k8s) RBAC & ABAC Autorisierungs-Middleware basierend auf Casbin. Diese Middleware verwendet K8s Validierungs-Zulassungs-Webhook, um auf jede Anforderung der k8s Ressourcen die von Kasbin definierten Richtlinien zu überprüfen. Diese Custom-Advisor-Controller führen eine Art Validierung auf dem Anfrageobjekt durch, das vom Api-Server weitergeleitet wurde und auf einer Logik basiert, schickt eine Antwort an den Api-Server zurück, die Informationen darüber enthält, ob die Anfrage erlaubt oder abgelehnt werden soll. Diese Controller sind bei Kubernetes mit dem ValidatingAdmissionWebhook registriert.

Der K8s API-Server muss wissen, wann er die eingehende Anfrage an unseren Zulassungskontrolleur sendet. Für diesen Teil wir haben einen Validierungswebhook definiert, der die Anfragen für jede Art von K8s Ressource/Unter-Ressource proxy und die Überprüfung der Richtlinien daran durchführen würde. Der Benutzer würde nur dann die Möglichkeit erhalten, die Operationen auf diese Ressourcen auszuführen, wenn der Kasbiner es ermächtigt. Der Vollstrecker prüft die Rollen des Benutzers, der in den Richtlinien definiert ist. Diese Middleware würde im K8s-Cluster eingesetzt werden.

Anforderungen

Bevor du fortfährst, vergewissere dich, dass du Folgendes hast-

  • Ein laufender k8s Cluster. Sie können die Cluster entweder über Docker ausführen, indem Sie sie auf dem Docker Desktop aktivieren oder das komplette K8s Ökosystem lokal oder auf Ihrem Server einrichten. Sie können dieser detaillierten -Anleitung folgen, um den k8s-Cluster lokal unter Windows einzurichten, oder diese Anleitung , wenn Sie für Linux einrichten möchten.
  • Kubectl CLI Dies ist die Anleitung um es unter Windows einzurichten und diese Anleitung für Linux.
  • OpenSSL

Auslastung

  • Erzeugen Sie die Zertifikate und Schlüssel für jeden Benutzer, indem Sie Openssl verwenden und das folgende Skript ausführen: -
./gen_cert.sh
  • Erstellen Sie das Docker-Bild aus der Dockerfile manuell durch den folgenden Befehl und ändern Sie die Build-Version hier und in der Deployment Datei, wie in den Builds.
 docker build -t casbin/k8s_authz:0.1 .
  • Definieren Sie die Casbin-Richtlinien in den model.conf und policy.csv. Sie können die -Dokumentation weiterleiten, um mehr über das Funktionieren dieser Richtlinien zu erfahren.

  • Vor dem Deployment können Sie die Ports in main.go und auch in der Validierung Webhook Konfiguration Datei je nach Benutzung ändern.

  • Den Validierungscontroller und den Webhook auf dem k8s Cluster bereitstellen, indem du ausführst:-

kubectl apply -f deployment.yaml
  • Für einen Produktionsserver müssen wir ein k8s Secret erstellen, um die Zertifikate zu Sicherheitszwecken zu platzieren.
kubectl erstellt geheimes generisches casbin -n default \
--from-file=key.pem=certs/casbin-key.pem \
--from-file=cert.pem=certs/casbin-crt.pem

Jetzt sollte der Server laufen und bereit sein, die Anfragen für die Operationen auf den k8s Ressourcen zu überprüfen.