Перейти к содержимому

Глоссарий

Доступ по ролям (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

Вопросы

Видит ли менеджер деньги?
Нет. Оплата и история пространства начинаются с роли администратора, а список тех, кто в пространстве и с какой ролью, открыт каждому его участнику.
Что будет с незнакомой ролью?
Она встаёт ниже самой нижней роли и не даёт ничего. Так и задумано: сломанное или незнакомое имя обязано закрывать дверь, а не открывать её настежь.
Обходит ли ключ программы роль?
Нет. Ключ приводит к своему хозяину, роль хозяина сравнивается как обычно, а права, записанные на самом ключе, сужают её дальше.
Почему оператор пользуется адресом, но не правит его?
Без рабочего адреса профиль не запустить вовсе, поэтому пользоваться им может каждый. А правка и смена адреса меняют то, через что коллеги работают прямо сейчас.
Можно ли запретить человеку удалять профили?
Открытый доступ такого права не даёт. Профиль удаляет тот, кто его завёл, или администратор, а всем прочим отвечают, что профиля нет.

Дайте каждому нужную роль

Позовите коллегу, дайте ему роль и откройте ему те группы, которые его.