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