
Review Access - плагин для kubectl, отображающий матрицу доступа к ресурсам сервера k8s
Обзор доступа — плагин kubectl для отображения матрицы доступа к ресурсам сервера
Вы когда-нибудь задумывались, какие у вас права доступа в предоставленном кластере Kubernetes?
Для отдельных ресурсов вы можете использовать kubectl auth can-i list deployments, но, возможно, вам нужен полный обзор?
Для этого и нужен rakkess.
Он выводит права доступа для текущего пользователя и всех серверных ресурсов, аналогично kubectl auth can-i --list.
Он также полезен для выяснения того, кто может взаимодействовать с определённым ресурсом сервера.
Ознакомьтесь с подкомандой rakkess resource ниже.

... на уровне кластера
rakkess
... в некотором пространстве имён
rakkess --namespace default
... с глаголами
rakkess --verbs get,delete,watch,patch
... для другого пользователя
rakkess --as other-user
... для другого сервисного аккаунта
rakkess --sa kube-system:namespace-controller
... и комбинировать с общими параметрами kubectl
KUBECONFIG=otherconfig rakkess --context other-context

...глобально во всех пространствах имён (учитываются только ClusterRoleBindings)
rakkess resource configmaps
...в заданном пространстве имён (учитываются RoleBindings и ClusterRoleBindings)
rakkess resource configmaps -n default
...с сокращённой записью
rakkess r cm # same as rakkess resource configmaps
.. с пользовательскими глаголами
rakkess r cm --verbs get,delete,watch,patch
Некоторые роли применяются только к ресурсам с определённым именем.
Для проверки таких конфигураций укажите имя ресурса как дополнительный аргумент.
Например, покажите права доступа для ConfigMap с именем ingress-controller-leader-nginx в пространстве имён ingress-nginx (обратите внимание на тонкое различие для nginx-ingress-serviceaccount по сравнению с предыдущим примером):

Поскольку rakkess resource требует запроса Roles, ClusterRoles и их привязок, обычно для этого нужен административный доступ к кластеру.
Также смотрите Использование.
Существует несколько способов установки rakkess. Рекомендуемый способ — через krew.
Krew — это менеджер плагинов для kubectl. Если вы ещё не установили krew, получите его по ссылке
https://github.com/kubernetes-sigs/krew.
Затем установка проста:
kubectl krew install access-matrix
Плагин будет доступен как kubectl access-matrix, подробности см. в doc/USAGE.
При использовании бинарных файлов для установки также ознакомьтесь с 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
Требования:
Компиляция:
export PLATFORMS=$(go env GOOS)
make all # binaries will be placed in out/
Требования:
Компиляция:
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
Бинарные файлы будут помещены в текущий каталог.
[1]: Этот режим был вдохновлён kubectl-who-can
| Что говорят другие о rakkess? |
|---|
«Выглядит удобно! rakkess, плагин kubectl для отображения матрицы доступа ко всем доступным ресурсам.» – @mhausenblas |
«Это действительно очень полезно. rakkess --as system:serviceaccount:my-ns:my-sa -n my-ns выводит матрицу доступа сервисного аккаунта в пространстве имён.» – @fakod |
| «БОМБА. Обожаю.» – @ralph_squillace |
| «Это сделало мой день. Ну, не сегодня, но я определённо буду часто им пользоваться.» – @Soukron |