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