База знаний
Роли и уровни разрешений
Роль говорит, что человеку можно делать; доступ к адресу — с чем именно он это может делать.
Подробности
- На человека приходится две выдачи, и, чтобы что-то произошло, обе должны совпасть. РОЛЬ, задаваемая в «Настройки → Участники», говорит, что ему можно ДЕЛАТЬ в рабочем пространстве: читать почту, отправлять её, редактировать шаблоны, добавить домен, выпустить API-ключ. ДОСТУП К АДРЕСУ, задаваемый кнопкой «Поделиться» в строке адреса, говорит, с какими АДРЕСАМИ он может это делать — только чтение или чтение и отправка. Тот, у кого есть роль с отправкой, но нет адресов, не может отправлять ни с чего; тот, у кого есть все адреса рабочего пространства, но только на чтение, тоже не может отправить ни с одного.
- Шесть ролей существуют без чьего-либо участия, и в каждом рабочем пространстве они одни и те же, поэтому «Admin» означает здесь то же, что в документации и в API. Owner, Admin, Member и Viewer образуют лестницу: каждая держит всё, что держит следующая, поэтому понижение сужает доступное человеку, а не подменяет его другим набором. Developer и Billing ступенями этой лестницы не являются. Developer строит интеграции — ему доступны API-ключи, вебхуки, шаблоны и отправка, но никакой почты рабочего пространства он не читает; Billing видит тариф и счета, может менять тариф и платёжные данные в нём и читает настройки почтового ящика, не имея права их менять. Их разрешения редактируемы: рабочее пространство, которое предпочло бы, чтобы его участники не писали шаблоны, снимает галочку, и изменение вступает в силу со следующего запроса любого, кто держит эту роль ЯВНО. Тот, чья роль до сих пор подразумевается доступом к адресу, выданным до появления ролей, сохраняет заводские значения, пока роль не выдадут ему напрямую. Редактируемы и их названия: рабочее пространство, живущее по Ops и On-call, переименовывает их и тем самым описывает само себя — в этом и смысл.
- Owner — исключение во всех направлениях: не редактируется, не удаляется, не назначается. Эта роль описывает аккаунт, на котором завязано рабочее пространство, и держит все разрешения, включая добавленные в более поздних выпусках, поэтому её список вычисляется, а не хранится. Передача рабочего пространства другому человеку — это перенос, а не смена роли, и здесь нет ничего, что его выполняет.
- Сверх них рабочее пространство пишет свои, всего до 24, отмечая разрешения в той же сгруппированной матрице. Отметка тянет за собой: «редактировать шаблоны» сохраняется вместе с «читать шаблоны», потому что роль, которая может отредактировать шаблон, но не может его открыть, — это забытая кем-то галочка, а не чья-то осознанная политика. Удаление роли, которую держат люди или API-ключи, спрашивает, куда их перевести, и отказывается вместо того, чтобы угадывать. Ключ, чья роль исчезла, остался бы вообще без потолка, а это шире только что удалённой роли.
- API-ключ можно выпустить под роль, и роль здесь — потолок, а не вторая выдача: ключу позволено то, что даёт пересечение его собственных scope с разрешениями роли, и оно вычисляется на каждом запросе. Ключ, созданный с правом отправки, но ограниченный ролью Viewer, отправлять не может, а сужение роли отзывает право на лету, без необходимости ротировать ключ. Ассистент держится того же списка, а MCP-сервер собирает инструменты клиента из разрешений вызывающего, поэтому у клиента с ролью Viewer инструмента отправки нет вовсе, и каждый ограниченный инструмент перепроверяет права на входе, потому что сессия может переключить почтовый ящик уже после того, как список собран.