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

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

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

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

Перечисленные выше таблицы взаимосвязаны. При изменении записи в одной из них могут произойти изменения в других таблицах. Например, при внесении пользователя в группу создается запись в таблице Группы пользователей. Все групповые роли будут присвоены пользователю созданием новых записей в таблице Роли пользователей. Взаимосвязи этих таблиц показаны на схеме ниже:

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


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

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

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

Пример

У Ивана Иванова несколько ролей:

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

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

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

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

Группы


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

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

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


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

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

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

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

  • No labels