Блог
Как отдать аккаунты подрядчику и не отдавать пароли
Команда ARMANOS7 мин
Что вы отдаёте вместе с паролем
Пароль от аккаунта это не один ключ, а сразу три. Он открывает сам аккаунт, у многих людей он открывает и почту восстановления, и он остаётся рабочим после того, как работа кончилась, пока вы его не смените на всех трёх.
Площадка при этом видит не подрядчика, а вас. Два входа в один аккаунт из двух городов за сутки это та самая картина, после которой аккаунт уходит на проверку, и объяснить её площадке нечем.
- 1
Ключ от аккаунта
Пароль открывает аккаунт целиком, а не ту часть, которая нужна для работы.
- 2
Ключ от возврата
Тот же пароль часто стоит и на почте восстановления, и тогда возврат аккаунта уходит из ваших рук.
- 3
Ключ без срока
Отправленный пароль живёт в переписке, пока вы его не смените, а смена выбивает из аккаунта всех.
Подрядчик заходит под своим именем
Вместо пароля вы даёте человеку место в своём рабочем пространстве. Он заводит себе учётную запись, приходит по коду приглашения и входит своей почтой и своим паролем, которых вы не знаете и знать не должны. Его вход это его вход, и на экране «История» он стоит под его именем.
Одно место всегда занимает владелец, поэтому коллег считайте с себя. Место сверх тарифа стоит 3 доллара в месяц, код приглашения живёт 7 дней, и отозвать его можно до того, как человек вошёл. Тариф даёт места пакетом, а дополнительные считаются поштучно.
| Тариф | Мест в команде |
|---|---|
| Free | 1 |
| Professional | 1 |
| Business | 3 |
| Enterprise | 20 |
Приглашение работает один раз
Код приглашения живёт семь дней, и срок этот берётся из одной строки на сервере, а не вписан в письмо руками. Просроченный код сервер отклоняет так же, как выдуманный, одним и тем же ответом.
Принятый код второй раз не работает: у приглашения есть отметка о принятии, и с ней оно считается использованным, сколько бы дней из семи ни оставалось. Отозвать можно только непринятое приглашение, а принятое снимается уже исключением человека из команды.
Один человек может состоять в нескольких командах, и своё пространство у него при этом остаётся. Тот, кто уже в вашей команде, второй раз по коду не вступит, и сервер скажет об этом прямо.
Пять ролей и где каждая упирается
Роль это ступень, а не список галочек. Верхняя открывает всё, что открывает нижняя, а незнакомое серверу слово роли не открывает ничего: у него нулевой ранг, и ни одну дверь он не проходит.
Подрядчику на три аккаунта хватает нижней ступени. Она даёт работать с отданными профилями и упирается в оплату, в состав команды и в «Историю», а ещё в общие группы и библиотеку прокси.
| Роль | Что открывает | Где упирается |
|---|---|---|
| Владелец | Всё пространство: оплата, команда, история | Исключить или посадить на группы нельзя |
| Администратор | Оплата и тариф, приглашения, роли, доступ к группам, история | Владельца он не тронет |
| Менеджер | Группы, библиотека прокси, сценарии, расписания, смена адреса | Ни оплаты, ни команды, ни истории |
| Оператор | Свои профили и те, что ему отдали | Ни библиотеки прокси, ни групп, ни расписаний |
| Участник | То же, что у оператора | Там же, где оператор |
Что добавляет каждая ступень
Две нижние роли, оператор и участник, равны между собой по рангу: обе работают с отданными профилями и ничего общего не меняют. Менеджер сверх этого заводит, правит и удаляет общие рабочие вещи: группы и библиотеку прокси, а денег и команды не касается. Подрядчику на три аккаунта эта ступень не нужна.
Администратор добавляет оплату, состав команды, историю, чужие профили и привязанные устройства. Владелец открывает всё и единственный, кого исключить нельзя.
| Ступень | Что добавляет к нижней |
|---|---|
| Оператор и участник | работа с отданными профилями |
| Менеджер | группы и библиотека прокси |
| Администратор | оплата, команда, история, чужие профили и устройства |
| Владелец | всё, и его нельзя исключить |
Группы сажают человека на одного клиента
Роль действует на всё пространство разом, поэтому ею одной не сказать «этот человек ведёт только клиента А». Это делают группы: вы отмечаете те, что ему видны, и его список сжимается до них, а остальные профили для него перестают существовать.
Ограничение держится в двух местах сразу. Профиля вне своих групп он не увидит ни в списке, ни по прямому номеру, а профиль без группы при этом тоже не показывается, и обойти это через адрес запроса нельзя: сервер проверяет группу на каждом запросе, а не только при построении списка.
Профиль уезжает, а пароль остаётся
Вы открываете подрядчику сам профиль, и к нему уезжает машина: отпечаток, закреплённая версия браузера, прокси и настройки. Площадка видит один и тот же компьютер, с какой бы стороны в аккаунт ни зашли, и смены машины между вами и подрядчиком не происходит.
Пароля от аккаунта среди этого нет. У профиля на сервере нет столбца ни под куки, ни под пару входа, ни под ключ одноразовых кодов, а тело запроса с такими полями сервер отклонит целиком, а не выбросит лишнее поле по-тихому.
- 1
Едет машина
Отпечаток, версия браузера, прокси и настройки достаются тому, кому вы профиль открыли.
- 2
Не едет вход
Пары логина с паролем и ключа одноразовых кодов на сервере нет вовсе.
- 3
Доступ снимается
Снимите доступ, и профиль пропадёт из его программы при ближайшей сверке.
Одно окно на один аккаунт
Двое, открывшие один профиль разом, дают площадке две живые сессии одного аккаунта из двух мест, и это худшее, что можно показать площадке за один день. Ваши машины друг друга не видят, поэтому на профиле стоит один замок для всех. Замок живёт на сервере: пока программа не вошла в аккаунт, она его не спрашивает и профиль открывает, потому что без входа спрашивать некого.
Держит его время, а не обещание: пока окно открыто, программа продлевает замок раз в минуту. Выдерните шнур из розетки, и через 3 минуты профиль откроется снова, без звонка администратору.
Что остаётся после расставания
Действие, о котором могут спорить, оставляет одну строку: кто, что, когда и в каком пространстве. Видов таких действий 58, и 6 про команду: приглашение, его отзыв, вход, смена роли, доступ к группам, уход. Эти строки на экране «История» читают администратор и владелец.
Уход из команды снимает доступ сразу в обе стороны. Замок, который он держал, снят, второе приглашение на тот же адрес больше не работает, а рабочие профили и ваши прокси остаются у вас. Место в команде освобождается тем же ходом.
Четыре дороги и цена каждой
Дорог четыре, и выбор между ними это выбор, чем вы рискуете. Таблица ниже называет цену каждой одной строкой, и ни одна из четырёх не бесплатна.
Под три аккаунта и одного человека берите вторую и третью строки вместе: место, нижнюю роль, одну группу и доступ к нужным профилям. На это уходит десять минут и три доллара в месяц сверх тарифа. Файл под паролем оставьте на случай, когда человеку нужен уже открытый аккаунт, а не машина под него: такой файл везёт и сессию, и пару входа.
| Дорога | Что уходит из ваших рук |
|---|---|
| Пароль в переписке | Аккаунт целиком и навсегда |
| Место, роль и группа | Ровно то, что вы отметили |
| Общий доступ к профилю | Машина и настройки, без пары входа |
| Файл профиля с сессией | Живая сессия и сохранённая пара входа |
Чего это не утверждает
- Это не утверждает, что подрядчик никогда не увидит пароль. Сессию с открытым аккаунтом возит зашифрованный файл, и в нём же едут сохранённая пара входа и ключ одноразовых кодов.
- Снятие доступа не стирает то, что уже легло на чужой диск. Профиль пропадает из его программы, а куки, записанные за время работы, остаются у него.
- Роль действует на всё пространство. Сделать человека старшим над одной группой и рядовым над другой нельзя: группы сужают видимое, а не права роли.
- Ни один браузер не чинит поведение. Одинаковые тексты, одна карта оплаты и один распорядок дня связывают аккаунты помимо ролей и групп.
Где это можно увидеть самому
Каждое число выше выходит из кода, который можно открыть и запустить.
- Пять ролей и их лестница
- apps/server/src/common/roles/workspace-roles.ts
- Группы сужают видимое, и это проверено на живом сервере
- apps/server/test/group-access.js
- Куки и пару входа сервер отвергает целиком
- apps/server/test/куки-и-входы-сервер-не-примет.js
- Уход из команды снимает доступ в обе стороны
- apps/server/test/team-money-seats.js
- Одно окно на профиль, перехват только у держателя
- apps/desktop/test/profile-busy.js
- Пара входа не уезжает на сервер, и это проверено в живом браузере
- apps/desktop/test/login-stays-local.js
- Одноразовые коды сходятся с эталонами стандарта
- apps/desktop/src/lib/totp.js · apps/desktop/test/totp.js
Вопросы
- Можно дать доступ, не заводя человеку учётную запись?
- Нет. Приглашение выписывается на адрес с уже заведённой записью, и это единственная преграда против постороннего, которому переслали код.
- Подрядчик увидит мои остальные аккаунты?
- Увидит, если вы не отметили ему группы. Пустой список означает не «ничего не видно», а «ограничения нет». Окно говорит это прямо: при пустом выборе в нём стоит строка «Ничего не выбрано: человек видит все группы».
- Как он будет проходить двухфакторную проверку?
- Ключ 2FA из окна «Одноразовый код» на сервер не уезжает, поэтому общий доступ к профилю его не передаёт. Код считает та машина, где лежит ключ: назовите код сами или отдайте профиль файлом.
- Что будет с аккаунтами, когда мы расстанемся?
- Доступ уходит в обе стороны в тот же миг, замок снят, второе приглашение на тот же адрес больше не работает. Куки, уже записанные на его диск, остаются у него.
- Сколько стоит посадить в команду трёх подрядчиков?
- Считайте с себя: одно место всегда за владельцем. На тарифе с тремя местами двое коллег входят без доплаты, каждый следующий стоит 3 доллара в месяц.
Рядом с этим
Команда, роли и группы
Места, ступени ролей и общий доступ к профилю.
Доступ по ролям
Что означает ступень роли и чего она не решает.
Как пригласить коллегу
Порядок с обеих сторон: от кода до первого входа.
Бесплатная проверка отпечатка
12 значений, прочитанных в вашем браузере, и ни одного запроса наружу.
Посмотрите, что отвечает ваш браузер
Проверка читает 12 значений прямо в вашем браузере и никуда их не отправляет.