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.