• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
[Мануал] Role based Access Control (RBAC)
Neket007
Core Developer
Здравствуйте, уважаемые пользователи форума, а в частности раздела 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 для всех)


В общем писал как могу, если что то не так поправляйте или спрашивайте.

Спасибо за внимание.
Сообщение # 1 отредактировано Neket007 - Вторник, 11.03.2014, 13:06
aveolona
Капрал
Спасибо! Полезно.
Сообщение # 2 написано 28.08.2015 в 21:51
  • Страница 1 из 1
  • 1
Поиск: