Пользователи, роли и права
Доступ в панели строится из трёх понятий:
- Право — одно разрешённое действие, например «запуск игрового сервера».
- Роль — именованный набор прав. Роль выдаётся пользователю.
- Прямое разрешение — право, выданное пользователю в обход ролей.
Права можно выдавать глобально или привязывать к конкретному объекту — чаще всего к одному игровому серверу. Именно так пользователю дают доступ к его серверу и ни к чему больше.
Роли по умолчанию
При первоначальном заполнении базы создаются две роли:
| Роль | Название в интерфейсе | Права |
|---|---|---|
admin |
Administrator | admin roles & permissions |
user |
User | Нет |
Роль admin получает первый созданный пользователь. Роль user прав не содержит вовсе: обычному
пользователю доступ выдаётся не ролью, а правами на конкретные игровые серверы.
Право
admin roles & permissions, выданное глобально, и есть признак администратора. По нему проверяется доступ к разделу «Администрирование» и по нему же определяется, к кому применяется обязательная двухфакторная аутентификация — см. Безопасность.Никакой особой роли «суперадминистратор» в панели нет, и пользователь с
id = 1привилегий по умолчанию не имеет: значение имеет только наличие этого права.
Права на игровой сервер
| Право | Название в интерфейсе |
|---|---|
game-server-common |
Базовые привилегии |
game-server-start |
Запуск игрового сервера |
game-server-stop |
Остановка игрового сервера |
game-server-restart |
Перезагрузка игрового сервера |
game-server-pause |
Пауза игрового сервера |
game-server-update |
Обновление игрового сервера |
game-server-files |
Доступ к файловому менеджеру |
game-server-tasks |
Доступ к заданиям сервера |
game-server-settings |
Доступ к настройкам |
game-server-console-view |
Чтение консоли |
game-server-console-send |
Отправка команд в консоль |
game-server-rcon-console |
RCON консоль |
game-server-rcon-players |
RCON управление игроками |
game-server-metrics |
Доступ к метрикам сервера |
game-server-common даёт базовый доступ к серверу: увидеть его в списке и открыть страницу.
Без него остальные права практически бесполезны — начинайте с него.
Права на чтение и запись в консоль разделены: game-server-console-view позволяет только смотреть,
game-server-console-send — отправлять команды. То же самое с RCON: доступ к консоли RCON и
управление игроками выдаются отдельно.
Кроме прав на игровые серверы существуют общие права create, view, edit, delete — они
применяются к разделам панели.
Выдача прав на конкретный сервер
«Администрирование» → «Пользователи» → выбрать пользователя → «Редактировать».
В форме два блока:
- Роли —
AdministratorилиUser. - Игровые серверы — список серверов, к каждому из которых можно отметить нужные права.
Права, выданные здесь, привязываются к конкретному серверу: пользователь получает доступ только к нему.
Через API то же самое делается так:
GET /api/users/{id}/servers — серверы пользователя
GET /api/users/{id}/servers/{server}/permissions — права на сервер
PUT /api/users/{id}/servers/{server}/permissions — изменить права
Свои права на сервер можно посмотреть запросом GET /api/servers/{server}/abilities.
Как проверяется доступ
Права пользователя собираются из двух источников: выданных ему напрямую и полученных из всех его ролей. Дальше действуют два правила.
Запрет сильнее разрешения. Если на нужное право есть запись-запрет, доступ не даётся, независимо от того, сколько разрешений выдано другими путями и в каком порядке они записаны.
Область действия должна совпадать. Право, выданное для одного сервера, не действует на другой. Запрет, поставленный на один сервер, тоже не затрагивает остальные.
Право может быть выдано в трёх областях:
| Область | Что означает |
|---|---|
| Глобально | Действует везде |
| На тип объектов | Действует на все игровые серверы, все выделенные серверы и так далее |
| На конкретный объект | Действует только на этот сервер |
Проверки, которым нужен глобальный доступ — например проверка на администратора — засчитывают только глобально выданное право. Разрешение, привязанное к одному серверу, администратором не делает.
Снятие права в интерфейсе не всегда означает просто удаление записи. Если после удаления пользователь всё ещё получает это право через роль, панель дополнительно ставит явный запрет — иначе право вернулось бы обратно через роль.
Кэширование
Кэша два, и это важно при правке прав напрямую в базе.
| Слой | Переменная | По умолчанию | Когда действует |
|---|---|---|---|
| В памяти процесса | RBAC_CACHE_TTL |
30s |
Всегда |
| В общем кэше | CACHE_TTL_RBAC |
24h |
Только при CACHE_DRIVER=redis |
Изменения прав через интерфейс и API сбрасывают кэш сразу. Правки напрямую в базе его не
сбрасывают: при кэше в памяти они вступят в силу за 30 секунд, а при CACHE_DRIVER=redis —
через сутки. Если правили базу, очистите кэш или перезапустите панель.
Управление пользователями
| Метод и путь | Назначение |
|---|---|
GET /api/users |
Список пользователей |
POST /api/users |
Создать пользователя |
GET /api/users/{id} |
Данные пользователя |
PUT /api/users/{id} |
Изменить пользователя |
DELETE /api/users/{id} |
Удалить пользователя |
Список пользователей доступен только администраторам.
Пароль, задаваемый при создании и изменении пользователя, проходит проверку политики паролей: от 12 до 128 байт и не из списка скомпрометированных. Подробности — Безопасность.
Регистрации пользователей в панели нет: учётные записи создаёт администратор.
Типовые задачи
Дать пользователю доступ к одному серверу
- Создайте пользователя: «Администрирование» → «Пользователи» → «Создать».
- Выдайте ему роль
User. - В блоке «Игровые серверы» выберите нужный сервер и отметьте права. Минимальный рабочий набор:
game-server-common,game-server-start,game-server-stop,game-server-restart. - Добавьте по необходимости: файловый менеджер, консоль, RCON, задания.
Сделать пользователя администратором
Выдайте роль Administrator. Она содержит право admin roles & permissions, дающее полный доступ.
После этого на пользователя начинает распространяться требование двухфакторной аутентификации: при следующем входе он увидит напоминание, а через 30 дней — требование её включить. См. Безопасность.
Забрать доступ, не удаляя учётную запись
Снимите права на серверы и оставьте роль User. Пользователь сможет войти, но не увидит ни одного
сервера. Действующие сессии при этом не завершаются — они продолжат работать до истечения срока
(24 часа, либо 7 дней при входе с отметкой «запомнить меня»).