
Review Access - Plugin kubectl para mostrar uma matriz de acesso para recursos do servidor k8s
Revisar Acesso - plugin kubectl para mostrar uma matriz de acesso para recursos do servidor
Você já se perguntou quais direitos de acesso você tem em um cluster Kubernetes fornecido?
Para recursos individuais, você pode usar kubectl auth can-i list deployments, mas talvez esteja procurando uma visão geral completa?
É para isso que serve o rakkess.
Ele lista os direitos de acesso para o usuário atual e todos os recursos do servidor, similar a kubectl auth can-i --list.
Também é útil para descobrir quem pode interagir com algum recurso do servidor.
Confira o subcomando rakkess resource abaixo.

... no escopo do cluster
rakkess
... em algum namespace
rakkess --namespace default
... com verbos
rakkess --verbs get,delete,watch,patch
... para outro usuário
rakkess --as other-user
... para outra conta de serviço
rakkess --sa kube-system:namespace-controller
... e combine com parâmetros comuns do kubectl
KUBECONFIG=otherconfig rakkess --context other-context

...globalmente em todos os namespaces (considera apenas ClusterRoleBindings)
rakkess resource configmaps
...em um namespace específico (considera RoleBindings e ClusterRoleBindings)
rakkess resource configmaps -n default
...com notação abreviada
rakkess r cm # igual a rakkess resource configmaps
.. com verbos personalizados
rakkess r cm --verbs get,delete,watch,patch
Algumas funções se aplicam apenas a recursos com um nome específico.
Para revisar tais configurações, forneça o nome do recurso como argumento adicional.
Por exemplo, mostre os direitos de acesso para o ConfigMap chamado ingress-controller-leader-nginx no namespace ingress-nginx (observe a diferença sutil para nginx-ingress-serviceaccount em relação ao exemplo anterior):

Como rakkess resource precisa consultar Roles, ClusterRoles e suas ligações, geralmente requer acesso administrativo ao cluster.
Veja também Uso.
Existem várias maneiras de instalar o rakkess. O método de instalação recomendado é via krew.
Krew é um gerenciador de plugins kubectl. Se você ainda não instalou o krew, obtenha-o em
https://github.com/kubernetes-sigs/krew.
Então a instalação é tão simples quanto
kubectl krew install access-matrix
O plugin estará disponível como kubectl access-matrix, veja doc/USAGE para mais detalhes.
Ao usar os binários para instalação, também veja 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
Requisitos:
Compilando:
export PLATFORMS=$(go env GOOS)
make all # os binários serão colocados em out/
Requisitos:
Compilando:
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
Os binários serão colocados no diretório atual.
[1]: Este modo foi inspirado por kubectl-who-can
| O que outros estão dizendo sobre o rakkess? |
|---|
"Bem, isso parece útil! rakkess, um plugin kubectl para mostrar uma matriz de acesso para todos os recursos disponíveis." – @mhausenblas |
"Isso é realmente muito útil. rakkess --as system:serviceaccount:my-ns:my-sa -n my-ns imprime a matriz de acesso de uma conta de serviço em um namespace" – @fakod |
| "A BOMBA. Adorei." – @ralph_squillace |
| "Isso fez o meu dia. Bem, não hoje na verdade, mas com certeza vou usá-lo bastante." – @Soukron |