# Multi-tenancy и изоляция SUMMARY: Как Synapse изолирует данные между пользователями и minds — разбор границ безопасности. Multi-tenancy и изоляция Synapse — multi-tenant-система: несколько пользователей, у каждого — несколько mind, полностью изолированных друг от друга. На этой странице описана модель изоляции. Иерархия арендаторов [CODE BLOCK] Уровни изоляции Уровень 1: изоляция пользователей Каждый аккаунт пользователя изолирован. Alice не может: - Видеть mind пользователя Bob - Получать доступ к воспоминаниям Bob (даже со своим JWT) - Просматривать данные аккаунта Bob Обеспечивается: колонкой во всех таблицах, JWT содержит , все запросы фильтруются по . Уровень 2: изоляция mind В рамках пользователя каждый mind изолирован. Mind A не может: - Видеть воспоминания Mind B - Получать доступ к задачам, чату, скриптам Mind B Обеспечивается: колонкой во всех таблицах данных, Mind Key содержит , все запросы фильтруются по . > [!CRITICAL] > Изоляция Mind Key — основная граница безопасности. Утёкший Mind Key даёт > полный доступ к данным этого mind — но ТОЛЬКО этого mind. Токены аутентификации | Токен | Область | Что может получить | |-------|-------|-------------------| | Mind Key | Один mind | Только данные этого mind | | JWT | Аккаунт пользователя | Управление аккаунтом (создание/список/удаление mind) | | Computer Token | Один компьютер | Команды этого компьютера | Доступ между mind В рамках одного пользователя Пользователь может получить доступ ко всем своим mind через JWT (например, возвращает список всех). Но для чтения/записи данных памяти требуется конкретный Mind Key. Между пользователями Пользователи не могут получать доступ к данным друг друга — КРОМЕ случая, когда они явно поделились mind через Sharing API: [CODE BLOCK] После этого Bob может получить доступ к Mind A через свой JWT (только для чтения, если ). Границы безопасности [CODE BLOCK] Типовые паттерны multi-tenancy Паттерн 1: один пользователь, один mind Наиболее распространён у индивидуальных пользователей LLM-агентов. - 1 аккаунт пользователя - 1 mind - 1 Mind Key - Все воспоминания в одной области Паттерн 2: один пользователь, несколько mind Для пользователей с несколькими контекстами (работа, личное, проекты). - 1 аккаунт пользователя - N mind (например, «work», «personal», «project-x») - N Mind Key - Каждая LLM-сессия использует один Mind Key Паттерн 3: командный общий mind Для команд, сотрудничающих над проектом. - 1 пользователь создаёт mind (получает Mind Key) - Создатель делится с участниками команды через JWT - Все участники получают доступ через JWT (или общий Mind Key) > [!WARNING] > Передача Mind Key даёт полный доступ на чтение/запись. Для командной работы > предпочтительнее Sharing API (на основе JWT), а не прямой обмен Mind Key. Паттерн 4: SaaS-провайдер Для приложений, встраивающих Synapse как слой памяти. - Каждый клиент = 1 аккаунт пользователя - Каждый проект клиента = 1 mind - Приложение хранит Mind Key по каждому клиенту/проекту - Полная изоляция между клиентами Проверка изоляции Тест: Mind Key не может получить доступ к другим mind [CODE BLOCK] Тест: JWT не может читать данные памяти напрямую [CODE BLOCK] Лучшие практики > [!TIP] > - Используйте один mind на проект/контекст — изоляция вам помогает > - Никогда не передавайте Mind Key — используйте Sharing API > - Ротируйте Mind Key при компрометации (удалите mind, создайте новый) > - Аудит общих mind — периодически проверяйте > - Используйте JWT для человеко-ориентированного UI — никогда не показывайте Mind Key конечным пользователям Следующие шаги - Аутентификация - Mind Key против JWT - Архитектура