6.4.2. Создание локальных администраторов
Иерархическая структура групп доступа с наследованием ограничений позволяет создавать локальных администраторов и делегировать им создание пользователей и настройку их прав в рамках подразделений организации.
Локальному администратору доступны экраны подсистемы безопасности, однако он видит только пользователей и группы в своей группе доступа и ниже. Он может создавать подгруппы и пользователей и назначать им имеющиеся в системе роли. При этом все создаваемые им пользователи будут иметь как минимум те же ограничения, что и он сам.
Глобальный администратор, находящийся в корневой группе доступа, лишенной ограничений, должен создать роли, которые будут доступны локальным администраторам для назначения пользователям. Сами локальные администраторы не должны иметь прав на создание и изменение ролей.
Рассмотрим следующую структуру групп доступа:
Задача:
-
Пользователи внутри группы
Departments
должны видеть только пользователей своей группы и ниже. -
В каждой из групп
Dept 1
,Dept 2
, и т.д. должен быть свой локальный администратор, который может создавать пользователей и назначать им имеющиеся роли.
Способ решения задачи:
-
Задать для группы
Departments
следующие ограничения:-
Для сущности
sec$Group
:{E}.id in ( select h.group.id from sec$GroupHierarchy h where h.group.id = :session$userGroupId or h.parent.id = :session$userGroupId )
Это ограничение не позволяет пользователям видеть группы выше своей собственной.
-
Для сущности
sec$User
:{E}.group.id in ( select h.group.id from sec$GroupHierarchy h where h.group.id = :session$userGroupId or h.parent.id = :session$userGroupId )
Это ограничение не позволяет пользователям видеть других пользователей, входящих в группы выше своей собственной.
-
Для сущности
sec$Role
(ограничение на Groovy проверяемое в памяти):!['system-full-access', 'Some Role to Hide 1', 'Some Role to Hide 2'].contains({E}.name)
Данное ограничение не позволяет пользователям видеть и получать нежелательные роли.
-
-
Создать роль
Department Administrator
для локальных администраторов:-
На вкладке Screens разрешите следующие экраны:
Administration
,Users
,Access Groups
,Roles
,sec$Group.edit
,sec$Group.lookup
,sec$Role.lookup
,sec$User.changePassword
,sec$User.copySettings
,sec$User.edit
,sec$User.lookup
,sec$User.newPasswords
,sec$User.resetPasswords
,sec$UserSubstitution.edit
. -
На вкладке Entities разрешите все операции для сущностей
sec$Group
,sec$User
,sec$UserRole
и операцию Read для сущностиsec$Role
(для добавления разрешений на объектsec$UserRole
установите флажок System level). -
На вкладке Attributes разрешите "*" для сущностей
sec$Group
,sec$User
иsec$Role
.
-
-
Создайте локальных администраторов в группах их отделов как показано на скриншоте выше и назначьте им роль
Department Administrator
.
В результате, когда локальный администратор входит в систему, он видит только группу своего отдела и вложенные группы:
Локальному администратору доступно создание новых пользователей и назначение им имеющихся ролей, кроме перечисленных в ограничении.