Перейти к основному содержимому
Версия: 1.23.3

Наследование ролей

Роли могут быть назначены пользователю несколькими способами:

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

Информация о ролях, группах и их взаимосвязях хранится в следующих таблицах:

ТаблицаОписание
Роли (sys_role)Список ролей, созданных в системе.
Роли пользователей (sys_user_has_role)Список пользователей и ролей, которыми они обладают.
Группы (sys_group)Список групп, созданных в системе.
Роль содержит (sys_role_contains)Таблица "многие-ко-многим", которая содержит взаимосвязь родительских и дочерних ролей.
Группа содержит (sys_group_contains)Таблица "многие-ко-многим", которая содержит взаимосвязь родительских и дочерних групп.
Роли групп (sys_role_group)Таблица "многие-ко-многим", которая связывает роли с группами.

Когда в любой из вышеприведенных таблиц происходит изменение, например, пользователь присоединился к какой-либо группе, это сопровождается изменениями соответствующих записей, относящихся к этому пользователю, в таблице Роль пользователя (sys_user_has_role).

Роли пользователя


Таблица Роли пользователя (sys_user_has_role) хранит информацию о пользовательских ролях, которые были:

  • назначены напрямую.
  • получены через группы.
  • получены через родительские роли или группы.

Чтобы получить список доступных записей в этой таблице, перейдите в Управление пользователями → Роли пользователей.

Пример

У Ивана Иванова несколько ролей. Среди них:

  • Он менеджер по запросам на изменения (change_manager). Эта роль ему дана его менеджером.
  • Он менеджер по инцидентам (incident_manager). Он получил эту роль, так как состоит в группе Менеджеры инцидентов.
  • Он имперсонатор (impersonator). Он получил эту роль через группу Имперсонаторы (которая включена в группу Администраторов безопасности).

Если вы исключите Ивана Иванова из группы Имперсонаторы, он потеряет роль impersonator, и связанная запись будет удалена из таблицы Роли пользователя (sys_user_has_role).

Следующий пример показывает множество ролей одного пользователя:

примечание

Одинаковых ролей может быть две: одна, выданная вручную пользователю и одна унаследованная (Наследуется = true). Если пользователь состоит в нескольких группах, которые дают ему одну и ту же роль, то растет значение поля Количество наследуемых.

Группы


Записи о группах хранятся в таблице Группы. Группа может иметь связь с ролью. Такие записи хранятся в таблице Роли групп.

При добавлении пользователя в группу, соответсвующая запись о связи создается в таблице Группы пользователей. Когда пользователь получает групповую роль, соответсвующая запись появляется в таблице Роли пользователя.

При удалении записи из таблицы Группы пользователей, пользователь теряет групповые роли.

Наследование ролей


Роли могут наследоваться разными способами:

  • Они наследуются из родительских групп. Для этого добавьте запись в таблицу Группа содержит, указав родительскую группу. Все члены дочерних групп получат роли родительской группы.
  • Они наследуются из родительских ролей. Для этого создайте запись в таблице Роли содержат с дочерней ролью. Все пользователи, у которых есть родительская роль, также наследуют дочернюю роль.
  • Они наследуются из роли групп. Если роль задана для группы в таблице Роли групп, пользователи наследуют все роли группы, в которой они состоят. Чтобы добавить их в группу, создайте запись в таблице Группы пользователей.

Это также работает и наоборот: когда вы отвязываете роль от группы (то есть удаляете запись из таблицы Роли групп), все члены группы теряют эту роль. При добавлении дочерней роли к родительской, пользователи с родительской ролью получают новую дочернюю роль и так далее.

примечание

Уровень наследования значения не имеет. Например, определенная родительская группа имеет родителей, а ее дочерняя группа, в свою очередь, имеет своих потомков. В этом случае всем родителям достаются все роли их потомков.