
Review Access - kubectl plugin um eine Zugriffsmatrix für k8s server resources anzuzeigen
Zugriff überprüfen - kubectl-Plugin zur Anzeige einer Zugriffsmatrix für Server-Ressourcen
Haben Sie sich jemals gefragt, welche Zugriffsrechte Sie auf einem bereitgestellten Kubernetes-Cluster haben?
Für einzelne Ressourcen können Sie kubectl auth can-i list deployments verwenden, aber vielleicht suchen Sie eine vollständige Übersicht?
Dafür ist rakkess gedacht.
Es listet die Zugriffsrechte für den aktuellen Benutzer und alle Server-Ressourcen auf, ähnlich wie kubectl auth can-i --list.
Es ist auch nützlich, um herauszufinden, wer mit einer Server-Ressource interagieren darf.
Probieren Sie den Unterbefehl rakkess resource unten.

... auf Cluster-Ebene
rakkess
... in einem Namespace
rakkess --namespace default
... mit Verben
rakkess --verbs get,delete,watch,patch
... für einen anderen Benutzer
rakkess --as other-user
... für ein anderes Servicekonto
rakkess --sa kube-system:namespace-controller
... und mit üblichen kubectl-Parametern kombinieren
KUBECONFIG=otherconfig rakkess --context other-context

... global in allen Namespaces (berücksichtigt nur ClusterRoleBindings)
rakkess resource configmaps
... in einem bestimmten Namespace (berücksichtigt RoleBindings und ClusterRoleBindings)
rakkess resource configmaps -n default
... mit Kurzschreibweise
rakkess r cm # same as rakkess resource configmaps
.. mit benutzerdefinierten Verben
rakkess r cm --verbs get,delete,watch,patch
Manche Rollen gelten nur für Ressourcen mit einem bestimmten Namen.
Um solche Konfigurationen zu überprüfen, geben Sie den Ressourcennamen als zusätzliches Argument an.
Zeigen Sie beispielsweise die Zugriffsrechte für die ConfigMap namens ingress-controller-leader-nginx im Namespace ingress-nginx an (beachten Sie den subtilen Unterschied für nginx-ingress-serviceaccount zum vorherigen Beispiel):

Da rakkess resource Roles, ClusterRoles und deren Bindungen abfragen muss, benötigt es normalerweise administrativen Cluster-Zugriff.
Siehe auch Verwendung.
Es gibt mehrere Möglichkeiten, rakkess zu installieren. Die empfohlene Installationsmethode ist über krew.
Krew ist ein kubectl-Plugin-Manager. Wenn Sie krew noch nicht installiert haben, holen Sie es sich unter
https://github.com/kubernetes-sigs/krew.
Dann ist die Installation so einfach wie
kubectl krew install access-matrix
Das Plugin wird als kubectl access-matrix verfügbar sein. Weitere Einzelheiten finden Sie in doc/USAGE.
Wenn Sie die Binärdateien zur Installation verwenden, schauen Sie auch in doc/USAGE.
curl -LO https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-amd64-linux.tar.gz \
&& tar xf rakkess-amd64-linux.tar.gz rakkess-amd64-linux \
&& chmod +x rakkess-amd64-linux \
&& mv -i rakkess-amd64-linux $GOPATH/bin/rakkess
curl -LO https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-amd64-darwin.tar.gz \
&& tar xf rakkess-amd64-darwin.tar.gz rakkess-amd64-darwin \
&& chmod +x rakkess-amd64-darwin \
&& mv -i rakkess-amd64-darwin $GOPATH/bin/rakkess
https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-windows-amd64.zip
Anforderungen:
Kompilieren:
export PLATFORMS=$(go env GOOS)
make all # binaries will be placed in out/
Anforderungen:
Kompilieren:
mkdir rakkess && chdir rakkess
curl -Lo Dockerfile https://raw.githubusercontent.com/corneliusweig/rakkess/master/Dockerfile
docker build . -t rakkess-builder
docker run --rm -v $PWD:/go/bin/ --env PLATFORMS=$(go env GOOS) rakkess
docker rmi rakkess-builder
Die Binärdateien werden im aktuellen Verzeichnis abgelegt.
[1]: Dieser Modus wurde inspiriert von kubectl-who-can
| Was sagen andere über rakkess? |
|---|
“Nun, das sieht praktisch aus! rakkess, ein kubectl-Plugin zur Anzeige einer Zugriffsmatrix für alle verfügbaren Ressourcen.” – @mhausenblas |
“das ist in der Tat sehr hilfreich. rakkess --as system:serviceaccount:my-ns:my-sa -n my-ns gibt die Zugriffsmatrix eines Servicekontos in einem Namespace aus” – @fakod |
| “DER HAMMER. Liebe es.” – @ralph_squillace |
| “Das hat meinen Tag gerettet. Nun, nicht heute, aber ich werde es definitiv oft verwenden.” – @Soukron |