#kubernetes #kubectl #rbac
#kubernetes #kubectl #rbac
Вопрос:
Команда, у меня есть приведенная ниже кластерная роль в kubernetes, которая разрешает доступ ко всему, но я не хочу ограничивать команды уровня узла и разрешать все остальные.
Что нужно изменить ниже? В принципе, пользователь должен иметь возможность запускать
kubectl get all --all-namespaces
но не информация об узлах НЕ должна отображаться
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: cluster-admin-test
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
- nonResourceURLs:
- '*'
verbs:
- '*'
Ответ №1:
Правила являются чисто аддитивными, что означает, что вы не можете ограничивать правила.
Таким образом, вам нужно будет перечислить все доступные ресурсы, кроме «узлов» с соответствующими операциями
Например:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: cluster-admin
rules:
- apiGroups: [""]
resources: ["pods","services","namespaces","deployments","jobs"]
verbs: ["get", "watch", "list"]
Кроме того, настоятельно не рекомендуется менять роль администратора кластера.
Стоит создать новую роль и назначить ей пользователей.
Комментарии:
1. то есть это снова разрешает любой доступ, кроме доступа к операциям на уровне узлов? подобный пользователь не сможет выполнить `kubectl удалить узел`
2. @fmaabd это позволит получить доступ только к тем ресурсам, которые были явно упомянуты в ваших правилах роли кластера, т.Е.[«модули», «службы», «пространства имен», «развертывания», «задания»]