Документация

Принципы безопасности

Четыре неизменных обязательства betool: строгая мультиарендность, аудит межтенантного доступа, обоснованный отказ от деструктивных операций, суверенные LLM.

betool спроектирован для регулируемых сред. Безопасность не является слоем, добавленным задним числом: это инвариант, определяющий каждую строку кода, каждую миграцию, каждый модуль.

1. Строгая мультитенантность

Каждая организация владеет своими собственными данными, pipeline, секретами, файлами и ключами LLM. Изоляция обеспечивается:

  • На уровне базы данных — каждая бизнес-таблица содержит индексированный столбец org_id, а серверные запросы всегда фильтруются по организации сессии.
  • На уровне файловой системы — у каждой организации есть собственный корень в <data_root>/orgs/<org_id>/. Никаких общих путей.
  • На уровне кэша — кэши раздельны по организациям; ни одной общей записи без явного флага is_shared = TRUE.
  • На уровне секретов — у каждой организации собственное хранилище, собственные ключи API, собственные токены. Никакого глобального запасного варианта. Секреты, введённые в конфигурации узла (HMAC-секрет, токен, пароль), также маскируются везде, где конфигурация читается повторно, — редактор, API, инструменты MCP, читаемые ИИ, предложения.

2. Обязательный аудит межтенантного доступа

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

  • Обусловлен согласием (opt-in) целевой организации — отзываемым в любой момент из панели администратора.
  • Регистрируется при каждом обращении — выделенная таблица аудита с областью действия по целевой организации, доступная клиентам через маршрут GET /api/admin/me/*-reads.
  • Отклоняется в случае сбоя записи аудита — никакого чтения без следа.

См. Аудит и GDPR.

3. Мотивированный отказ при деструктивных операциях

Любая операция, которая уничтожает или заменяет контент другой организации (REPLACE-IN-PLACE дочерних элементов, DELETE), отклоняется, если целевая организация не активировала согласие на чтение. Обоснование: без видимости оператор предложил бы полезную нагрузку, которая могла бы вслепую перезаписать существующий контент.

4. Суверенность модели LLM

  • Нативная поддержка BYOK — ваши ключи OpenAI, Anthropic, Google управляются вашей организацией. Никакой межорганизационной утечки. BYOK необязателен (существуют управляемые модели с оплатой в кредитах), но рекомендуется в регулируемой среде.
  • Приватные модели — Ollama, LM Studio или любой endpoint, совместимый с OpenAI (vLLM…), размещённые у вас или в вашем частном облаке. Промпты и ответы никогда не покидают ваш периметр.
  • Никакого скрытого общего пула — если организация использует общую модель, это явное решение с контролем доступа.

Инженерная позиция

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

Конкретно, при любом компромиссе на уровне архитектуры / кода / промпта:

ВыборОжидаемый выборПочему
Задержка × 2 против сокращённого рассуждения× 2Потерянная точность возвращается доверием пользователей
Детальная наблюдаемость против только основных логовДетальнаяБез видимости отладка слепа
Ускорение, ухудшающее поведениеОтказПоведенческий риск измеряется инцидентами у клиентов

Мантра: «Если кто-то находит баг, это значит, что мы поставили недостаточно предохранителей, а не слишком много».

Дополнительное чтение