
Review Access - plugin kubectl per mostrare una matrice degli accessi per le risorse del server k8s
Review Access - plugin kubectl per mostrare una matrice di accesso per le risorse del server
Ti sei mai chiesto quali diritti di accesso hai su un cluster Kubernetes fornito?
Per risorse singole puoi usare kubectl auth can-i list deployments, ma magari stai cercando una visione d'insieme?
Ecco a cosa serve rakkess.
Elenca i diritti di accesso per l'utente corrente e tutte le risorse del server, simile a kubectl auth can-i --list.
È utile anche per scoprire chi può interagire con una determinata risorsa del server.
Dai un'occhiata al sottocomando rakkess resource qui sotto.

... a livello di cluster
rakkess
... in un determinato namespace
rakkess --namespace default
... con verbi
rakkess --verbs get,delete,watch,patch
... per un altro utente
rakkess --as other-user
... per un altro service account
rakkess --sa kube-system:namespace-controller
... e combina con i parametri comuni di kubectl
KUBECONFIG=otherconfig rakkess --context other-context

...globalmente in tutti i namespace (considera solo ClusterRoleBindings)
rakkess resource configmaps
...in un dato namespace (considera RoleBindings e ClusterRoleBindings)
rakkess resource configmaps -n default
...con notazione abbreviata
rakkess r cm # uguale a rakkess resource configmaps
.. con verbi personalizzati
rakkess r cm --verbs get,delete,watch,patch
Alcuni ruoli si applicano solo a risorse con un nome specifico.
Per esaminare tali configurazioni, fornisci il nome della risorsa come argomento aggiuntivo.
Ad esempio, mostra i diritti di accesso per la ConfigMap chiamata ingress-controller-leader-nginx nel namespace ingress-nginx (nota la sottile differenza per nginx-ingress-serviceaccount rispetto all'esempio precedente):

Poiché rakkess resource deve interrogare Roles, ClusterRoles e i loro binding, solitamente richiede accesso amministrativo al cluster.
Vedi anche Usage.
Ci sono diversi modi per installare rakkess. Il metodo consigliato è tramite krew.
Krew è un gestore di plugin per kubectl. Se non hai ancora installato krew, scaricalo da
https://github.com/kubernetes-sigs/krew.
Poi l'installazione è semplice come
kubectl krew install access-matrix
Il plugin sarà disponibile come kubectl access-matrix, vedi doc/USAGE per ulteriori dettagli.
Quando usi i binari per l'installazione, dai un'occhiata anche a 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
Requisiti:
Compilazione:
export PLATFORMS=$(go env GOOS)
make all # i binari saranno posizionati in out/
Requisiti:
Compilazione:
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
I binari saranno posizionati nella directory corrente.
| Cosa dicono gli altri di rakkess? |
|---|
“Well, that looks handy! rakkess, a kubectl plugin to show an access matrix for all available resources.” – @mhausenblas |
“that's indeed pretty helpful. rakkess --as system:serviceaccount:my-ns:my-sa -n my-ns prints the access matrix of a service account in a namespace” – @fakod |
| “THE BOMB. Love it.” – @ralph_squillace |
| “This made my day. Well, not actually today but I definitively will use it a lot.” – @Soukron |
[1]: Questa modalità è stata ispirata da kubectl-who-can