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. The enforcer checks the roles of the user defined in the policies. 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. You can refer the docs to get to know more about the working of these policies.
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
- Einmal ist dieser Teil erledigt, müssen wir das Verzeichnis der certs im Hauptverzeichnis ändern. o und dann in manifestiert mit dem des
Geheimes
.
Jetzt sollte der Server laufen und bereit sein, die Anfragen für die Operationen auf den k8s Ressourcen zu überprüfen.
Im Falle einer Anfrage können Sie auf unserem Gitter Kanal fragen.