Документация находится в разработке, может содержать неполную информацию.

Описание

Платформа предоставляет стандартный набор ролей для управления доступом к проектным и кластерным ресурсам, которые разделены на два типа:

  • Use-роли — эти роли назначаются пользователям проекта и позволяют им управлять ресурсами в рамках указанного проекта.
  • Manage-роли — эти роли предназначены для администраторов платформы, предоставляя им права на управление ресурсами на уровне всей платформы.

Права доступа на платформе настраиваются с использованием стандартного подхода RBAC Kubernetes, что предполагает создание ресурсов RoleBinding или ClusterRoleBinding, в которых указывается соответствующая роль.

Use-роли

Use-роли предназначены для назначения прав пользователю в указанном проекте и определяют доступ к проектным ресурсам. Эти роли могут быть использованы только в контексте ресурса RoleBinding.

Платформа предоставляет следующие use-роли:

  • d8:use:role:viewer — дает возможность просматривать проектные ресурсы и аутентифицироваться в кластере;
  • d8:use:role:user — дополнительно к роли d8:use:role:viewer позволяет просматривать секреты и ресурсы RBAC, подключаться к виртуальным машинам и выполнять команду d8 k proxy;
  • d8:use:role:manager — дополнительно к роли d8:use:role:user позволяет управлять проектными ресурсами;
  • d8:use:role:admin — дополнительно к роли d8:use:role:manager позволяет управлять ресурсами ResourceQuota, ServiceAccount, Role, RoleBinding, NetworkPolicy, VirtualImage.

Пример назначения прав администратора проекта vms пользователю joe:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: project-admin-joe
  namespace: vms
subjects:
- kind: User
  name: joe@example.com # для users.deckhouse.io параметр .spec.email
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: d8:use:role:admin
  apiGroup: rbac.authorization.k8s.io

Пример назначения прав администратора проекта vms группе пользователей vms-admins:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: project-admin-joe
  namespace: vms
subjects:
- kind: Group
  name: vms-admins # для groups.deckhouse.io параметр .spec.name
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: d8:use:role:admin
  apiGroup: rbac.authorization.k8s.io

Manage-роли

Manage-роли предназначены для предоставления прав на управление:

  • Кластерными ресурсами платформы.
  • Настройками модулей платформы.
  • Компонентами модулей в проектах с префиксами d8-*, kube-*.

Платформа предоставляет следующие manage-роли, позволяющие управлять всеми подсистемами кластера all:

  • d8:manage:all:viewer — предоставляет права на просмотр конфигураций модулей (ресурсы moduleConfig), а также на доступ к cluster-wide-ресурсам этих модулей;
  • d8:manage:all:manager — предоставляет все права роли viewer, а также возможность управления конфигурацией модулей и cluster-wide-ресурсами этих модулей.

Пример назначения прав администратора кластера пользователю joe:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: cluster-admin-joe
subjects:
- kind: User
  name: joe@example.com # для users.deckhouse.io параметр .spec.email
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: d8:manage:all:admin # название manage-роли
  apiGroup: rbac.authorization.k8s.io

В платформе предусмотрена возможность предоставления администраторам ограниченных прав для управления ресурсами и модулями, связанными с конкретными подсистемами.

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

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: network-admin-joe
subjects:
- kind: User
  name: joe@example.com # для users.deckhouse.io параметр .spec.email
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: d8:manage:networking:admin # название manage-роли
  apiGroup: rbac.authorization.k8s.io

Роли для управления подсистемами следуют определенному формату — d8:manage:<SUBSYSTEM>:<ACCESS_LEVEL>, где:

  • SUBSYSTEM — название подсистемы;
  • ACCESS_LEVEL — уровень доступа, по аналогии с ролями подсистемы all.

Подсистемы для manage-ролей представлены в таблице:

Пространства имен используемых модулями области
all Все модули Все пространства имен
deckhouse
  • deckhouse
  • multitenancy-manager
  • d8-multitenancy-manager
  • d8-system
infrastructure
  • ceph-csi
  • chrony
  • cloud-provider-aws
  • cloud-provider-azure
  • cloud-provider-gcp
  • cloud-provider-openstack
  • cloud-provider-vcd
  • cloud-provider-vsphere
  • cloud-provider-yandex
  • cloud-provider-zvirt
  • descheduler
  • istio
  • keepalived
  • local-path-provisioner
  • loki
  • node-manager
  • pod-reloader
  • snapshot-controller
  • terraform-manager
  • vertical-pod-autoscaler
  • d8-ceph-csi
  • d8-chrony
  • d8-cloud-instance-manager
  • d8-cloud-provider-aws
  • d8-cloud-provider-azure
  • d8-cloud-provider-gcp
  • d8-cloud-provider-openstack
  • d8-cloud-provider-vcd
  • d8-cloud-provider-vsphere
  • d8-cloud-provider-yandex
  • d8-cloud-provider-zvirt
  • d8-descheduler
  • d8-istio
  • d8-keepalived
  • d8-local-path-provisioner
  • d8-monitoring
  • d8-pod-reloader
  • d8-snapshot-controller
  • d8-system
  • kube-system
kubernetes
  • control-plane-manager
  • flow-schema
  • kube-dns
  • kube-proxy
  • priority-class
  • kube-system
networking
  • cilium-hubble
  • cni-cilium
  • cni-flannel
  • cni-simple-bridge
  • flow-schema
  • ingress-nginx
  • istio
  • kube-dns
  • kube-proxy
  • metallb
  • network-gateway
  • network-policy-engine
  • node-local-dns
  • openvpn
  • static-routing-manager
  • d8-cni-cilium
  • d8-cni-flannel
  • d8-cni-simple-bridge
  • d8-ingress-nginx
  • d8-istio
  • d8-metallb
  • d8-network-gateway
  • d8-openvpn
  • d8-static-routing-manager
  • d8-system
  • kube-system
observability
  • dashboard
  • extended-monitoring
  • log-shipper
  • monitoring-applications
  • monitoring-custom
  • monitoring-deckhouse
  • monitoring-kubernetes
  • monitoring-kubernetes-control-plane
  • monitoring-ping
  • okmeter
  • operator-prometheus
  • prometheus
  • prometheus-metrics-adapter
  • prometheus-pushgateway
  • upmeter
  • d8-dashboard
  • d8-log-shipper
  • d8-monitoring
  • d8-okmeter
  • d8-operator-prometheus
  • d8-upmeter
  • kube-prometheus-pushgateway
security
  • admission-policy-engine
  • cert-manager
  • operator-trivy
  • runtime-audit-engine
  • secret-copier
  • user-authn
  • user-authz
  • d8-admission-policy-engine
  • d8-cert-manager
  • d8-operator-trivy
  • d8-runtime-audit-engine
  • d8-user-authn
storage
  • ceph-csi
  • snapshot-controller
  • d8-ceph-csi
  • d8-snapshot-controller