Глоссарий
Доступ по ролям (RBAC)
Доступ по ролям это правило, по которому человеку разрешено ровно то, что даёт его роль, а не его имя.
Лестница и что она открывает
Роли идут по старшинству, и каждая несёт в себе всё, что даёт роль ниже. Имена взяты отраслевые, а границы у них такие, какие сервер действительно держит на каждом ходу.
Участник и оператор
Работают с открытыми им профилями, а в общих креативах команды и кладут, и сносят наравне со старшими. Группы, адреса и расписания менять им нельзя.
Менеджер
Плюс группы, библиотека прокси, сохранённые сценарии, расписания и заявки на экране «Поставщики прокси». Денег и людей эта роль не касается.
Администратор
Плюс три вещи, которые сервер держит только для администраторов: деньги, приглашения с ролями и история пространства.
Владелец
Всё сразу, и это единственная роль, которую нельзя ни отобрать, ни сузить чужими руками изнутри пространства.
Роль сравнивают по старшинству
Каждый ход требует нижнюю роль, и всё, что стоит выше, проходит. Поэтому администратору не нужно второе разрешение на работу менеджера.
Роль, которой сервер не знает, встаёт ниже самой нижней роли. Опечатка в имени роли не даёт ничего вместо того, чтобы по недосмотру дать всё.
Где проходит черта
| Действие | Нижняя роль, которая проходит |
|---|---|
| Открыть и вести отданный тебе профиль | Участник |
| Завести, переименовать и снести группу | Менеджер |
| Завести, поправить или снести адрес в библиотеке | Менеджер |
| Сменить IP общей мобильной линии | Менеджер |
| Выкачать библиотеку прокси на вторую машину | Менеджер |
| Сохранить общий сценарий или расписание | Менеджер |
| Завести заявку на трафик на экране «Поставщики прокси» | Менеджер |
| Позвать, исключить, изменить роль | Администратор |
| Читать историю рабочего пространства | Администратор |
| Сменить тариф или карту | Администратор |
У ключа для программ тоже есть роль
Ключ принадлежит человеку, поэтому отвечает сразу за две вещи: за роль своего хозяина и за свой собственный, более узкий список того, к чему он допущен.
Оба читаются на одном запросе, и побеждает тот, что уже. Ключ только на чтение у администратора по-прежнему только читает.
Роли и группы отвечают на разное
Роль отвечает на вопрос, что человеку разрешено менять. Группа отвечает на вопрос, какие профили он вообще видит и открывает.
Они не заменяют друг друга, а перемножаются: менеджер, посаженный на одного клиента, всё так же правит общую библиотеку и всё так же видит одного этого клиента.
С чем это путают
Вход в аккаунт
Второй шаг на двери доказывает, кто именно пришёл. Роль решает, до чего пришедшему разрешено дотянуться внутри.
Права ключа для программ
Права сужают один ключ. Роль принадлежит человеку и действует на каждый ключ, который он заведёт.
Доступ к группам
Группы сужают то, что человек видит. Роль сужает то, что он может менять, и ставятся эти две вещи в разных местах.
Чего это не делает
- Это не даёт написать свою роль под себя. Лестница задана заранее, и выбор остаётся один: какую роль дать человеку.
- Это не меняется от группы к группе. Нельзя быть администратором у одного клиента и оператором у другого: роль принадлежит всему пространству.
- Это не передаёт профиль в руки. Роль решает, что человеку можно менять, а сам профиль всё равно нужно открыть ему отдельным действием.
- Это не сужает владельца. Тот, кто завёл пространство, видит его целиком, и администратор не запрёт его в его же собственном аккаунте.
Проверить
Каждая черта выше это строка в файле, который можно открыть.
- Лестница, числовое старшинство и роли, которые можно выдать
- apps/server/src/common/roles/workspace-roles.ts
- Роль берётся после входа и сравнивается, а незнакомая роль не даёт ничего
- apps/server/src/common/roles/roles.guard.ts
- Нижнюю роль не пускают ни к правке библиотеки, ни к смене IP
- apps/server/test/paid-access.js · apps/server/test/proxy-secret.js
- Доступ к группам читается и при показе списка, и при открытии профиля
- apps/server/test/group-access.js
Вопросы
- Видит ли менеджер деньги?
- Нет. Оплата и история пространства начинаются с роли администратора, а список тех, кто в пространстве и с какой ролью, открыт каждому его участнику.
- Что будет с незнакомой ролью?
- Она встаёт ниже самой нижней роли и не даёт ничего. Так и задумано: сломанное или незнакомое имя обязано закрывать дверь, а не открывать её настежь.
- Обходит ли ключ программы роль?
- Нет. Ключ приводит к своему хозяину, роль хозяина сравнивается как обычно, а права, записанные на самом ключе, сужают её дальше.
- Почему оператор пользуется адресом, но не правит его?
- Без рабочего адреса профиль не запустить вовсе, поэтому пользоваться им может каждый. А правка и смена адреса меняют то, через что коллеги работают прямо сейчас.
- Можно ли запретить человеку удалять профили?
- Открытый доступ такого права не даёт. Профиль удаляет тот, кто его завёл, или администратор, а всем прочим отвечают, что профиля нет.
Дайте каждому нужную роль
Позовите коллегу, дайте ему роль и откройте ему те группы, которые его.