Авторизация оператора
Авторизация оператора защищает чувствительные изменения control plane в Settings. Она отделена от доступа к обычному Web UI: просмотр агентов, терминалов, документации и статистики не требует секрета оператора.
Эта возможность не является аутентификацией удалённых пользователей. Оставляйте ThreadCells доступным только через loopback и следуйте Удалённому доступу, когда доступ нужен другой машине.
Как это работает
ThreadCells хранит verifier, производный от секрета, но никогда не сам открытый секрет. Сервер загружает этот verifier при запуске. Ввод верного секрета создаёт кратковременную безопасную сессию оператора; защищённые изменения вновь блокируются после её истечения.
Verifier configured
↓
Settings shows Locked
↓ enter operator secret
Unlock operator changes
↓
Short-lived authenticated session
↓ expires
Locked againМинимальная длина секрета оператора — ровно 5 символов. Четыре символа отклоняются. Настоятельно рекомендуется более длинный, случайно сгенерированный секрет.
Создание verifier
Запустите отдельную команду от имени административного пользователя из любого доступного для чтения рабочего каталога:
threadcells operator create-verifier --output /etc/threadcells/operator-verifier.jsonКоманда запрашивает секрет без отображения и записывает только verifier с солью KDF. Защитите содержащий каталог от изменения service account ThreadCells, разрешив этому account читать файл. Подходящая схема:
sudo chown root:threadcells /etc/threadcells
sudo chmod 0750 /etc/threadcells
sudo chown root:threadcells /etc/threadcells/operator-verifier.json
sudo chmod 0640 /etc/threadcells/operator-verifier.jsonАдаптируйте имя группы к service account вашей установки. Каждый родительский каталог в пути также должен быть доверенным: ThreadCells отклоняет verifier, достигнутый через каталог, принадлежащий сервису или доступный для записи группе/всем.
Не помещайте секрет или JSON verifier в репозиторий, базу данных, журналы, хранилище браузера, телеметрию или API-запрос вне операции разблокировки.
Настройка сервера
Установите абсолютную ссылку на verifier в окружении сервера:
THREADCELLS_OPERATOR_VERIFIER_FILE=/etc/threadcells/operator-verifier.jsonПерезапустите только сервер ThreadCells и проверьте Settings → General → Operator authorization. Состояние должно быть Configured · Locked, а не Not configured или Configuration invalid.
Endpoint сессии сообщает только безопасное состояние:
curl -s http://127.0.0.1:9889/operator/sessionОжидаемый результат до разблокировки содержит "configured": true и "authenticated": false. Он никогда не возвращает путь к verifier, соль, хеш или секрет.
Разблокировка защищённых изменений
В Settings введите секрет и выберите Unlock operator changes. По умолчанию аутентифицированное окно длится пять минут. UI показывает время истечения и возвращается к блокировке при завершении сессии.
Защищённые вызовы Settings завершаются ошибкой в заблокированном состоянии и успешны во время аутентифицированной сессии. Браузер использует кратковременную безопасную сессионную cookie сервера; секрет оператора не сохраняется.
Full Cleanup повторно использует ровно те же полномочия. Предварительный просмотр остаётся доступной только для чтения проверкой безопасности, а выполнение требует текущей сессии оператора и стандартного подтверждения необратимого действия. Подтверждение не запрашивает секрет повторно. Не существует отдельного секрета очистки, credential в URL, значения в browser storage или долговременной открытой копии; сроки действия, повторная блокировка и rate limits не меняются.
Замена секрета
Создайте новый verifier во временном административном пути, проверьте его владельца и разрешения, затем атомарно замените настроенный файл и перезапустите ThreadCells. Существующие сессии оператора после замены следует считать недействительными.
Текущий Web UI намеренно не предлагает неаутентифицированный удалённый сброс или средство записи verifier из Settings. Подготовка через CLI сохраняет verifier во владении операционной системы и не создаёт более широкую подсистему безопасности.
Запуск Owner XHigh
Встроенный профиль critical_sol_xhigh_owner доступен через Create Session & Spawn Agent, Add Agent для существующей сессии и локальный CLI. Оба Web-потока показывают одинаковое предупреждение об исключительных полномочиях, требуют явного подтверждения и разблокированной сессии оператора, выпускают кратковременную одноразовую capability, привязанную к ревизии/области, и потребляют её обычным путём запуска. Add Agent привязывает capability к существующей сессии и канонически разрешённому working directory; оператор не может ввести произвольный заменяющий путь.
Локальный путь CLI требует --owner-xhigh и явного интерактивного подтверждения. Он выпускает и потребляет тот же класс одноразовой capability через loopback. Многоразового обхода или сокращённого пути через заголовок нет: отсутствие флажка/подтверждения, отсутствующий или неверный секрет оператора, несовпадающая область или повторно использованный grant закрыто отклоняются. Аутентифицированный Web-клиент получает непрозрачную capability один раз исключительно для выполнения соответствующего запуска; секрет оператора никогда не возвращается. Ни одно из значений не копируется в метаданные агента/сессии, запросы провайдера, транскрипты терминала, журналы или хранилище браузера. Эти пути запуска не авторизуют дочерние агенты и не ослабляют защищённые изменения Settings.
Устранение неполадок
- Не настроено: переменная окружения отсутствует или пуста. Убедитесь, что она попадает в фактический процесс сервера, затем перезапустите его.
- Конфигурация недопустима: изучите журналы сервера и безопасную причину проверки. Проверьте схему JSON, абсолютный путь, доступность для чтения, владельца, режим и каждый родительский каталог. Не создавайте заново допустимый verifier только чтобы скрыть проблему пути или владения.
- Верный секрет отклонён: убедитесь, что генератор и сервер используют тот же файл verifier и что не запущен старый процесс сервера.
- Разблокировка успешна, затем сразу блокируется: убедитесь, что браузер принимает cookies и системные часы верны.
- Разблокировка работает локально, но защищённые изменения не проходят через HTTPS proxy: установите
THREADCELLS_TRUSTED_PROXY_ORIGINSв точный публичный HTTPS origin (например,https://threadcells.example.com) в окружении сервиса ThreadCells, затем перезапустите. Не добавляйте пути, wildcard или неаутентифицированные origin. - Создание verifier не удаётся в несвязанном каталоге: используйте текущую сборку ThreadCells. Отдельная команда не должна изучать
.envрабочего каталога.
См. Модель безопасности о сопутствующих предположениях доверия.
