6.4.2. Создание локальных администраторов

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

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

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

Рассмотрим следующую структуру групп доступа:

local admins groups

Задача:

  • Пользователи внутри группы 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.

В результате, когда локальный администратор входит в систему, он видит только группу своего отдела и вложенные группы:

local admins res

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