Наследование ролей
Роли могут быть назначены пользователю несколькими способами:
- напрямую.
- группе, к которой принадлежит пользователь. В этом случае эту роль получают и все остальные пользователи этой группы.
- родительской группе, дочерняя группа которой содержит пользователя. В этом случае эту роль также получают все пользователи родительской и дочерней групп.
- через родительскую роль.
Информация о ролях, группах и их взаимосвязях хранится в следующих таблицах:
Таблица | Описание |
---|---|
Роли (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). Если пользователь состоит в нескольких группах, которые дают ему одну и ту же роль, то растет значение поля Количество наследуемых.
Группы
Записи о группах хранятся в таблице Группы. Группа может иметь связь с ролью. Такие записи хранятся в таблице Роли групп.
При добавлении пользователя в группу, соответсвующая запись о связи создается в таблице Группы пользователей. Когда пользователь получает групповую роль, соответсвующая запись появляется в таблице Роли пользователя.
При удалении записи из таблицы Группы пользователей, пользователь теряет групповые роли.
Наследование ролей
Роли могут наследоваться разными способами:
- Они наследуются из родительских групп. Для этого добавьте запись в таблицу Группа содержит, указав родительскую группу. Все члены дочерних групп получат роли родительской группы.
- Они наследуются из родительских ролей. Для этого создайте запись в таблице Роли содержат с дочерней ролью. Все пользователи, у которых есть родительская роль, также наследуют дочернюю роль.
- Они наследуются из роли групп. Если роль задана для группы в таблице Роли групп, пользователи наследуют все роли группы, в которой они состоят. Чтобы добавить их в группу, создайте запись в таблице Группы пользователей.
Это также работает и наоборот: когда вы отвязываете роль от группы (то есть удаляете запись из таблицы Роли групп), все члены группы теряют эту роль. При добавлении дочерней роли к родительской, пользователи с родительской ролью получают новую дочернюю роль и так далее.
Уровень наследования значения не имеет. Например, определенная родительская группа имеет родителей, а ее дочерняя группа, в свою очередь, имеет своих потомков. В этом случае всем родителям достаются все роли их потомков.