Как ограничить панель управления kubernetes определенной панелью мониторинга для пользователя, которому назначена определенная роль

Я пытаюсь ограничить пользователя на панели управления kubernetes, который подключается к kubectl после того, как я создал для него .crt и соответствующую конфигурацию.

Я успешно ограничил то, что он может делать со следующей ролью. Yaml

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 namespace: development
 name: dev
rules:
- apiGroups: [""]
  resources: ["pods", "services", "crontabs", "pods/log"]
  verbs: ["create", "get", "update", "list", "delete"]
- apiGroups: ["batch"]
  resources: ["cronjobs", "jobs"]
  verbs: ["*"]
- apiGroups: ["apps"]
  resources: ["deployments"]
  verbs: ["create", "get", "update", "list", "delete"]

и привязка кластера

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: kubernetes-dashboard-susann
rules:
- apiGroups: [""]
  resources: ["services/proxy"]
  resourceNames: ["https:kubernetes-dashboard:"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- nonResourceURLs: ["/ui", "/ui/*", "/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/*"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

чтобы он мог получить доступ к приборной панели. Проблема в том, что я хочу, чтобы он имел доступ только к пространству имен development.

Я уже немного искал, и некоторые решения, похоже, включают создание учетной записи службы, и другая проблема может быть связана с тем, что разрешения на просмотр панели мониторинга предоставляются для роли кластера и не могут быть размещены в пространстве имен.

Есть ли лучший подход к решению этой проблемы?


person Nmaster88    schedule 20.10.2020    source источник
comment
Итак, в основном вы хотите, чтобы пользователь имел доступ только к одному конкретному пространству имен?   -  person Wytrzymały Wiktor    schedule 20.10.2020
comment
Да, @Wytrzmaly_Wiktor, когда пользователь переходит на панель управления, я хочу, чтобы он видел только его пространство имен, я не хочу, чтобы он переходил в другие пространства имен и смотрел, что там.   -  person Nmaster88    schedule 21.10.2020


Ответы (1)


Это можно сделать с помощью правильной конфигурации RBAC.

Вам нужно создать RoleBinding в конкретном namespace. Например, правила RBAC могут быть созданы следующим образом:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: dev
  namespace: development
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: edit
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: dev

С его помощью dev Role будет иметь предварительно определенную роль кластера edit, которая ограничит их стандартными операциями над большинством объектов через панель управления. dev не сможет раскрыть список других пространств имен.

Чтобы полностью понять весь процесс, я настоятельно рекомендую ознакомиться с приведенным ниже руководством:

Если вам нужно использовать этот или аналогичный подход для большего масштаба, вы можете рассмотреть возможность использования этого инструмента:

И если вам нужны дополнительные знания по этой конкретной теме, я предлагаю проверить следующие источники:

Ознакомление с руководством и дополнение любых необходимых знаний связанными источниками упростит вам понимание и реализацию этого решения в вашем случае использования.

person Wytrzymały Wiktor    schedule 27.10.2020