7.2.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:

      ({E}.description is null or {E}.description not like '[hide]')

      Данное ограничение не позволяет пользователям видеть роли, в атрибуте description которых записана строка [hide].

  • Создать роль, которая запретит редактирование ролей и разрешений:

    • Установите флажок Default role.

    • В поле Description добавьте строку [hide].

    • На вкладке Entities запретите операции create, update, delete для сущностей sec$Role и sec$Permission (для добавления разрешений на объект sec$Permission установите флажок System level).

    Все создаваемые пользователи, включая локальных администраторов, будут получать роль local_user. Эта роль невидима для пользователей группы Departments, поэтому даже локальные администраторы не смогут ее с себя снять. В результате они смогут оперировать только существующими ролями, созданными для них глобальным администратором. Разумеется, эти роли не должны отменять запрещений, введенных ролью local_user.