Настроить роли проекта
Роли проекта позволяют управлять доступом пользователей и групп ко всем пространствам имен внутри проекта. Роль, назначенная на уровне проекта, автоматически применяется ко всем вложенным пространствам имен.
Перед началом работы
Убедитесь, что:
- У вас есть роль администратора проекта или администратора кластера.
- Проект уже создан. Если нет, создайте проект.
Специальные роли
В Stackland есть две специальные роли для управления проектами:
stackland:admin— роль администратора проекта. Дает полный доступ ко всем ресурсам проекта, включая управление пространствами имен и ролями.stackland:project-member— роль участника проекта. Дает возможность видеть проект и его пространства имен в консоли управления и инструментах.
Назначить администратора проекта
Администратор кластера назначает администраторов проекта с помощью ресурса ProjectRoleBinding.
-
В левом меню выберите Проекты.
-
Выберите нужный проект из списка.
-
На боковой панели проекта нажмите Управление доступом.
-
На вкладке Участники нажмите + Добавить участника.
-
В диалоге Добавить участника укажите:
- Субъект — выберите пользователя или группу из выпадающего списка.
- Роль — выберите Администратор.
-
Нажмите Добавить.
Создайте ресурс ProjectRoleBinding в служебном пространстве имен проекта:
apiVersion: stackland.yandex.cloud/v1alpha1
kind: ProjectRoleBinding
metadata:
name: stackland-projects-team-alpha-admins
namespace: project-team-alpha
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: stackland:admin
subjects:
- kind: User
name: alice@stackland
- kind: Group
name: team-alpha-admins
Где:
metadata.name— имя привязки роли. Должно начинаться с префиксаstackland-projects-. Обязательное поле.metadata.namespace— служебное пространство имен проекта в форматеproject-<имя_проекта>. Обязательное поле.roleRef.name— имя роли. Для администратора проекта укажитеstackland:admin. Обязательное поле.subjects— список субъектов, которым назначается роль. Поддерживаются типыUser,Group,ServiceAccount. Обязательное поле.
Примените манифест:
kubectl apply -f project-role-binding.yaml
Администратор проекта получает:
- полный доступ ко всем пространствам имен проекта;
- возможность создавать и удалять пространства имен;
- возможность назначать роли другим пользователям в рамках проекта.
Добавить участника проекта
Участник проекта видит проект и его пространства имен в интерфейсе и инструментах. Для выполнения действий с ресурсами участнику необходимо дополнительно назначить роль с нужными правами.
-
В левом меню выберите Проекты.
-
Выберите нужный проект из списка.
-
На боковой панели проекта нажмите Управление доступом.
-
На вкладке Участники нажмите + Добавить участника.
-
В диалоге Добавить участника укажите:
- Субъект — выберите пользователя или группу из выпадающего списка.
- Роль — выберите Участник.
-
Нажмите Добавить.
apiVersion: stackland.yandex.cloud/v1alpha1
kind: ProjectRoleBinding
metadata:
name: stackland-projects-team-alpha-members
namespace: project-team-alpha
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: stackland:project-member
subjects:
- kind: User
name: bob@stackland
- kind: Group
name: team-alpha-members
Назначить роль во всех пространствах имен проекта
Администратор проекта может назначить существующую ClusterRole во всех пространствах имен проекта:
apiVersion: stackland.yandex.cloud/v1alpha1
kind: ProjectRoleBinding
metadata:
name: stackland-projects-kafka-admins
namespace: project-team-alpha
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: stackland:editor
subjects:
- kind: Group
name: team-alpha-developers
Stackland автоматически создаст RoleBinding в каждом пространстве имен проекта.
Создать кастомную роль проекта
Администратор проекта может создать кастомную роль, которая будет доступна во всех пространствах имен проекта.
-
Создайте ресурс
ProjectRole:apiVersion: stackland.yandex.cloud/v1alpha1 kind: ProjectRole metadata: name: stackland-projects-pg-admin namespace: project-team-alpha rules: - apiGroups: - postgresql.stackland.yandex.cloud resources: - postgresqlclusters verbs: - create - delete - patch - update - get - listГде:
metadata.name— имя роли. Должно начинаться с префиксаstackland-projects-. Обязательное поле.metadata.namespace— служебное пространство имен проекта. Обязательное поле.rules— список правил доступа в формате Kubernetes RBAC. Обязательное поле.
-
Назначьте роль с помощью
ProjectRoleBinding:apiVersion: stackland.yandex.cloud/v1alpha1 kind: ProjectRoleBinding metadata: name: stackland-projects-pg-admins namespace: project-team-alpha roleRef: apiGroup: rbac.authorization.k8s.io kind: ProjectRole name: stackland-projects-pg-admin subjects: - kind: Group name: team-alpha-pg-admins
Stackland автоматически создаст соответствующие Role и RoleBinding в каждом пространстве имен проекта.
Просмотреть назначенные роли
- В левом меню выберите Проекты.
- Выберите нужный проект из списка.
- На боковой панели проекта нажмите Управление доступом.
На странице доступны три вкладки:
- Участники — список пользователей и групп с ролями Участник или Администратор.
- Роли проекта — список кастомных ролей проекта.
- Привязки ролей проекта — таблица привязок с колонками Имя, Роль, Субъекты, Дата создания.
Чтобы получить список привязок ролей проекта:
kubectl get projectrolebindings -n project-team-alpha
Чтобы получить список кастомных ролей проекта:
kubectl get projectroles -n project-team-alpha
Отозвать роль
- В левом меню выберите Проекты.
- Выберите нужный проект из списка.
- На боковой панели проекта нажмите Управление доступом.
- На вкладке Участники найдите нужного участника.
- В строке участника нажмите значок ⋯ и выберите Удалить.
- Подтвердите удаление.
Удалите соответствующий ресурс ProjectRoleBinding:
kubectl delete projectrolebinding stackland-projects-kafka-admins -n project-team-alpha