Безопасность

Телеоперация физического робота через интернет требует большего, чем форма входа. Эта страница описывает, как работают аутентификация и роли, как следует обращаться с API-ключами, какие защитные механизмы охраняют живое управление, что записывает журнал аудита и как сообщить об уязвимости.

Обновлено 2026-08-09

Аутентификация

Аккаунтами управляет Supabase Auth с помощью email и пароля, Google OAuth или GitHub OAuth. После входа ваш браузер хранит токен сессии (JWT), который автоматически обновляется промежуточным слоем платформы, поэтому рабочая сессия не истекает молча посреди работы.

API принимает этот токен сессии в двух формах: как cookie сессии, который дашборд отправляет в любом случае, либо как заголовок Authorization Bearer. Программный доступ без входа через браузер использует вместо этого API-ключи, описанные ниже. Эндпоинты отклоняют запросы без действительных учётных данных; работают без аутентификации только явно публичные маршруты, такие как проверка здоровья и контактная форма.

Роли и разрешения

У каждого аккаунта ровно одна роль: CLIENT, OPERATOR или ADMIN. Клиенты владеют роботами и платят за сессии, операторы управляют роботами и зарабатывают на сессиях, а администраторы управляют платформой. Между клиентом и оператором вы выбираете при онбординге; роль администратора назначается администраторами платформы и не может быть выбрана самостоятельно.

ВозможностьCLIENTOPERATORADMIN
Регистрация и управление роботамиДаНетДа
Запуск и проведение сессий телеоперацииНетДаДа
Просмотр сессийНа своих роботахСвои сессииВсе
Датасеты и экспортДаНетВсе
Оплата, счета, способы оплатыДаНетВсе
Заработок и выплатыНетДаВсе
Одобрение сертификацийНетТолько запросДа
Разрешение споровТолько подачаНетДа

Проверки ролей происходят на стороне сервера при каждом запросе, а не в интерфейсе. Под API доступ к базе данных дополнительно ограничен политиками row-level security, поэтому даже баг в эндпоинте не превращается в свободный доступ к строкам чужих аккаунтов.

API-ключи

API-ключи дают скриптам и серверам доступ без входа через браузер. Вы создаёте и отзываете их в /dashboard/settings; ключи несут префикс ayr_live_ и отправляются как заголовок Authorization Bearer. Ключ действует с ролью и правами аккаунта, который его создал, поэтому утёкший ключ так же опасен, как утёкший пароль.

  • Держите ключи на стороне сервера. Им не место в клиентском JavaScript, мобильных приложениях или публичных репозиториях.
  • Используйте один ключ на интеграцию. Когда что-то утекает, вы хотите отозвать одного потребителя, а не всех сразу.
  • Ротируйте без простоя: сначала создайте ключ на замену, разверните его, затем отзовите старый ключ в /dashboard/settings.
  • Отзывайте немедленно при любом подозрении. Создание нового ключа занимает секунды; злоумышленник с действительным ключом может сделать всё, что может ваш аккаунт.

Защита во время живого управления

Живое управление привязано к аренде сессии. Робот принимает команды только пока находится ровно в одной сессии ACTIVE, и только от оператора, держащего эту сессию; для всех остальных сам робот помечен как IN_SESSION. Оператор может держать не более одной сессии ACTIVE или PAUSED одновременно, что исключает номинальное управление двумя руками одним человеком одновременно.

Кокпит предоставляет аварийную остановку, которая немедленно останавливает руку, а пауза или завершение сессии останавливают поток команд целиком. Кроме того, платформа отслеживает активность оператора: после периода отсутствия ввода отправляется предупреждение о неактивности, а если оператор остаётся неактивным, сессия останавливается автоматически. Это защищает обе стороны: клиента от оплаты за простой и робота от нахождения в неконтролируемом состоянии под живой арендой.

Журнал аудита

Каждая сессия ведёт журнал событий: начало и конец, паузы и возобновления, проверки активности, предупреждения о неактивности, смены операторов, запросы на продление и ошибки, каждое с отметкой времени. Когда спор рассматривается, этот журнал событий служит основным доказательством, что ещё одна причина, по которой платформа записывает его автоматически, а не полагается на чью-либо память.

Помимо сессий значимые действия на платформе записываются в журнал аудита с id действующего пользователя, действием, затронутым ресурсом и метаданными. Изменения профиля, транзакции, значимые для платежей, и действия администраторов, все оставляют записи. Записи аудита пишет платформа, и их нельзя редактировать через какой-либо пользовательский интерфейс.

Шифрование и защита данных

Весь трафик к платформе и от неё шифруется при передаче с помощью TLS, включая видеопотоки и управляющие сигналы. На уровне данных политики row-level security ограничивают доступ к базе данных по аккаунту. Платёжные данные образуют самую чёткую границу из всех: карты и банковские реквизиты обрабатывает исключительно Stripe, они никогда не попадают на серверы AY-Robots.

Сообщить об уязвимости

Если вы обнаружили проблему безопасности, сообщите о ней ответственно через страницу /security или форму /contact, используя категорию Bug Report. Укажите, что вы обнаружили, где и как это воспроизвести; не обращайтесь к данным других пользователей сверх минимума, необходимого для демонстрации проблемы, и не публикуйте детали, пока у нас не было разумной возможности это исправить. Мы читаем каждое сообщение.

Частые вопросы

Может ли оператор увидеть мои платёжные данные?

Нет. Оплата, счета и способы оплаты относятся к возможностям роли клиента. Оператор в сессии на вашем роботе видит контекст сессии, а не ваш аккаунт или платёжные данные.

Что происходит с роботом, если моё соединение обрывается посреди сессии?

Поток команд останавливается вместе с соединением, и вступает в действие защита от неактивности: после периода предупреждения без ввода сессия останавливается автоматически. За хвост простоя после этой остановки с клиента плата не взимается.

Как безопасно ротировать API-ключ?

Создайте новый ключ в /dashboard/settings, переключите на него свою интеграцию, убедитесь, что он работает, затем отзовите старый ключ. Такой порядок означает нулевой простой и отсутствие окна, когда не существует действительного ключа.

Хранятся ли мои платёжные данные на серверах AY-Robots?

Нет. Карты и банковские реквизиты идут напрямую в Stripe. Платформа хранит только ссылки на объекты Stripe, никогда сами исходные платёжные данные.