|
|
Модератор форума: Dimitro |
Форум TrinityCore Установка / Настройка TrinityCore [Мануал] Role based Access Control (RBAC) (Разберемся, что же это такое и как с этим работать.) |
[Мануал] Role based Access Control (RBAC) |
Здравствуйте, уважаемые пользователи форума, а в частности раздела TrinityCore.
Давно уже в офф репо есть такая штука, как Rbac, и о ней мало кто знает, судя по разделу помощи. Решил помочь разобраться тем, кто этого хочет. Начнем. Как говорит нам переводчик Rbac(Role based Access Control) - Система доступа на основе ролей. Я не буду расписывать что дает эта система и тд. А начну сразу, что это за фрукт. Насколько вы помните, раньше в TrinityCore были просто уровни доступа от 0 до 3, ну и 4 для консоли. И что давали эти уровни? Правильно, ничего кроме как использования команд и еще пары фишек. Rbac дает возможность более тонко настроить определенные разрешения для определенного аккаунта или для группы аккаунтов. Таблицы, относящиеся к этой системе, находятся в базе auth и они следующие: Код rbac_account_permissions rbac_default_permissions rbac_linked_permissions rbac_permissions И начать разговор о структуре таблиц стоит с обьяснения что такое Permissions. Permissions - это разрешение, т.е. чтобы вам легче обьяснить, проведите аналогию с конфигурационными файлами, которые вы настраиваете. Это примерно тоже самое, только для определенного аккаунта или группы аккаунтов. Т.е. например, разрешение вступать на поле боя. Поняли? Читаем дальше. Начнем с таблицы Код rbac_default_permissions rbac_default_permissions - таблица, задающая стандартные разрешения(в дальнейшем везде Permissions) для определенных уровней доступа, т.е. например для уровня доступа 0, определенные Permissions. Но если заглянуть в таблицу, можно увидеть что только по одному разрешению для каждого уровня доступа вписано. Не торопитесь, об этом дальше. Структура таблицы: Код secId - Уровень доступа, для которого будем задавать Permissions. permissionId - Id разрешения. Думаю тут немножко непонятно, а где собственно, сами разрешения? Смотрим таблицу Код rbac_permissions rbac_permissions - таблица, в которой описаны все Permissions Структура. Код Id -Id Permission, который задается в ядре. name - Название разрешения(выбирается произвольно, но чтобы было понятно, за что оно отвечает) Немножко разобрались с стандартными Permissions для стандартных уровней доступа. Лучше рассмотреть на примере. Введем команду .account set gmlevel Test 3 -1 - Дадим уровень доступа 3 для аккаунта Test для всех реалмов. Смотрим в таблицу rbac_default_permissions, уровню доступа 3 соответствует разрешение 192, а посмотрев в таблицу rbac_permissions увидим, что название этого разрешения - Role: Sec Level Administrator - так называемая роль администратора. Но это не все. Ведь для каждой команды и не только команды есть свои Разрешения, почему же для каждого уровня доступа только по 1 Permissions? Тут нужно смотреть таблицу \ Смотрим таблицу Код rbac_linked_permissions rbac_linked_permissions - таблица, в которой описаны так скажем, зависимости разрешений. Структура. Код Id -Id Permission, там скажем, которая вызывается. linkedId - Id разрешения, которое будет даваться, если аккаунту выдано разрешение из поля Id Т.е. 192 разрешение вызывает другое, то в свою очередь еще одно и тд. В общем то и все. Осталась таблица Код rbac_account_permissions rbac_account_permissions - таблица, в которой описаны разрешение для определенного аккаунта, а не для всего уровня доступа. Структура. Код accountId -Id аккаунта, для которого мы будем выдавать разрешение или запрещать его. permissionId - Id разрешения, которое будет даваться или наоборот, отниматься у аккаунта granted - у поля 2 значения 1 - разрешить, 0 запретить. realmIId - для какого реалма это делаем(-1 для всех) В общем писал как могу, если что то не так поправляйте или спрашивайте. Спасибо за внимание. |
| |||
| |||