
Review Access - plugin kubectl pour afficher une matrice d'accès pour les ressources du serveur k8s
Revue des accès - plugin kubectl pour afficher une matrice d'accès pour les ressources du serveur
Vous êtes-vous déjà demandé quels droits d'accès vous possédez sur un cluster Kubernetes ?
Pour une ressource unique, vous pouvez utiliser kubectl auth can-i list deployments, mais peut-être cherchez-vous une vue d'ensemble ?
C'est à cela que sert rakkess.
Il liste les droits d'accès pour l'utilisateur courant et toutes les ressources du serveur, similaire à kubectl auth can-i --list.
Il est également utile pour savoir qui peut interagir avec une ressource serveur.
Consultez la sous-commande rakkess resource ci-dessous.

... au niveau du cluster
rakkess
... dans un namespace
rakkess --namespace default
... avec des verbes
rakkess --verbs get,delete,watch,patch
... pour un autre utilisateur
rakkess --as other-user
... pour un autre compte de service
rakkess --sa kube-system:namespace-controller
... et combiner avec les paramètres courants de kubectl
KUBECONFIG=otherconfig rakkess --context other-context

...globalement dans tous les namespaces (ne considère que les ClusterRoleBindings)
rakkess resource configmaps
...dans un namespace donné (considère les RoleBindings et ClusterRoleBindings)
rakkess resource configmaps -n default
...avec une notation abrégée
rakkess r cm # identique à rakkess resource configmaps
.. avec des verbes personnalisés
rakkess r cm --verbs get,delete,watch,patch
Certains rôles ne s'appliquent qu'aux ressources ayant un nom spécifique.
Pour examiner de telles configurations, fournissez le nom de la ressource comme argument supplémentaire.
Par exemple, affichez les droits d'accès pour la ConfigMap nommée ingress-controller-leader-nginx dans le namespace ingress-nginx (notez la différence subtile pour nginx-ingress-serviceaccount par rapport à l'exemple précédent) :

Comme rakkess resource doit interroger les Roles, ClusterRoles et leurs liaisons, cela nécessite généralement un accès administrateur au cluster.
Voir aussi Usage.
Il existe plusieurs façons d'installer rakkess. La méthode d'installation recommandée est via krew.
Krew est un gestionnaire de plugins kubectl. Si vous n'avez pas encore installé krew, obtenez-le sur
https://github.com/kubernetes-sigs/krew.
Ensuite, l'installation est aussi simple que
kubectl krew install access-matrix
Le plugin sera disponible sous le nom kubectl access-matrix, voir doc/USAGE pour plus de détails.
Lorsque vous utilisez les binaires pour l'installation, jetez également un œil à 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
Prérequis :
Compilation :
export PLATFORMS=$(go env GOOS)
make all # les binaires seront placés dans out/
Prérequis :
Compilation :
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
Les binaires seront placés dans le répertoire courant.
[1]: Ce mode a été inspiré par kubectl-who-can
| Que disent les autres de rakkess ? |
|---|
« Eh bien, ça a l'air pratique ! rakkess, un plugin kubectl pour afficher une matrice d'accès pour toutes les ressources disponibles. » – @mhausenblas |
« C'est effectivement très utile. rakkess --as system:serviceaccount:my-ns:my-sa -n my-ns affiche la matrice d'accès d'un compte de service dans un namespace. » – @fakod |
| « UNE BOMBE. J'adore. » – @ralph_squillace |
| « Ça a illuminé ma journée. Bon, pas aujourd'hui mais je vais définitivement l'utiliser souvent. » – @Soukron |