RBAC Для kubernetes приборной панели - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть пользователь "A". У меня есть пространства имен X, Y, Z. Я создал роль пользователя RBAC и привязку роли для пользователя «A», который имеет доступ к пространству имен «X».

Я хотел предоставить пользователю "A" доступ к панели управления kubernetes (которая является ролью и ролевой привязкой для Kube-System). Но когда я даю доступ к панели мониторинга, пользователь «А» может видеть все пространства имен.

Но я хочу, чтобы он видел только пространство имен X, к которому он имеет доступ).

Как я мог пойти по этому поводу?

1 Ответ

0 голосов
/ 04 ноября 2018

Какая версия вашего Dashboard? Насколько я знаю, начиная с версии 1.7, Dashboard использует более безопасную настройку. Это означает, что по умолчанию он имеет минимальный набор привилегий, необходимых для работы Dashboard.

В любом случае, вы можете проверить привилегии sa, используемые Dashboard, убедиться, что у него есть минимальные привилегии, например:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: kubernetes-dashboard-minimal
  namespace: kube-system
rules:
  # Allow Dashboard to create 'kubernetes-dashboard-key-holder' secret.
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["create"]
  # Allow Dashboard to create 'kubernetes-dashboard-settings' config map.
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["create"]
  # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
- apiGroups: [""]
  resources: ["secrets"]
  resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs"]
  verbs: ["get", "update", "delete"]
  # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
- apiGroups: [""]
  resources: ["configmaps"]
  resourceNames: ["kubernetes-dashboard-settings"]
  verbs: ["get", "update"]
  # Allow Dashboard to get metrics from heapster.
- apiGroups: [""]
  resources: ["services"]
  resourceNames: ["heapster"]
  verbs: ["proxy"]
- apiGroups: [""]
  resources: ["services/proxy"]
  resourceNames: ["heapster", "http:heapster:", "https:heapster:"]
  verbs: ["get"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: kubernetes-dashboard-minimal
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: kubernetes-dashboard-minimal
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system

Затем создайте правила RBAC, чтобы предоставить полные права для пространства имен от X до A:

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: user-A-admin
  namespace: X
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: A

Убедитесь, что у пользователя A нет других правил RBAC.

...