Security и контроль доступа¶
Результат¶
Вы удержите project access, connectors, MCP credentials, exports и admin settings внутри нужной tenant boundary.
Что потребуется¶
- Определите owner проекта и ответственного за каждый connector.
- Новую интеграцию или write-back policy сначала проверяйте в отдельном test project.
- Не размещайте production secrets, access tokens, API keys, customer data и internal service URLs в документации, скриншотах, tickets или chat.
Проверить границу данных¶
Threadory ограничивает knowledge, activity, approvals, exports, API keys и MCP connections одним проектом. API проверяет membership и фильтрует данные по выбранному project.
- В project switcher проверьте организацию и проект.
- Откройте Settings → Members и проверьте каждую роль.
- Удалите больше не нужный доступ.
- Сохраняйте хотя бы одного owner: до удаления или понижения последнего owner назначьте замену.
- Используйте разные projects, если данные или доступ нельзя разделять.
Organization access — first-class org_membership (ADR-0006). Наличие роли
в organization не означает той же роли во всех projects: доступ к данным
по-прежнему через project membership.
Применить least privilege¶
Выдавайте минимальную роль для задачи:
- Viewer — чтение project data и governance-вкладок уровня viewer;
- Member — вклад в проект и запрос project actions;
- Admin — connectors, settings, API keys, exports и approvals;
- Owner — изменение ролей, organization access controls и destructive settings проекта или организации.
Owner может открыть Settings → Organization → Access control и установить minimum role для Cost, Audit Log, Prompts, LLM и API Keys. Для Cost, Audit Log и API Keys есть отдельная server-side проверка чтения. Считайте видимость вкладки навигацией, а не единственной security boundary; изменение settings дополнительно ограничено server-enforced role.
Защитить identity connector¶
- Выдавайте только scopes из connector guide и матрицы интеграций.
- Используйте отдельную service identity, если source это поддерживает.
- Передавайте OAuth credentials и webhook secrets через secret flow Threadory, а не через free-text fields.
- После подключения выполните read-only или low-risk проверку из guide.
- Перед disconnect или rotation проверьте pending approvals и automations, зависящие от identity.
- После проверки замены отзовите старый credential во внешней системе.
Отключение source останавливает будущий доступ, но само по себе не доказывает удаление уже синхронизированных entities, audit records или exports. Для data lifecycle используйте документированные export и retention.
Защитить MCP и API keys¶
- Для интерактивного MCP-клиента человека предпочитайте OAuth.
- Project API key создавайте только для именованной headless-интеграции.
- Скопируйте plaintext один раз в разрешённый secret store.
- Не добавляйте key в MCP URL, Git, screenshots или prompts.
- Проверяйте Last used в Settings → API Keys.
- Немедленно отзывайте неиспользуемые или подозрительные keys и заменяйте их в интеграции.
API key привязан к одному проекту. OAuth-доступ MCP следует текущим membership и role пользователя.
Отключить пользователя или интеграцию¶
- Определите затронутые projects, connectors, API keys и pending approvals.
- Выгрузите необходимые records до destructive retention или cleanup.
- Отзовите именованные API keys и credentials во внешней системе.
- Удалите membership или понизьте роль.
- Отключите automatic write-back без ответственного reviewer.
- Проверьте, что старые credentials получают
401или403, а действующие пользователи сохранили доступ. - Запишите изменение в утверждённый change log организации.
Реагировать на подозрение об утечке¶
- Сначала отзовите или ротируйте credential.
- Не вставляйте утёкшее значение в incident ticket.
- Выполните поиск по actor и time в Audit Log и сопоставьте с Activity.
- Проверьте audit history внешней системы.
- Создавайте замену только после проверки project и minimum access.
- Эскалируйте platform operator при подозрении на cross-project access, неизвестную активность или отсутствие audit evidence.
Как проверить результат¶
- Удалённый user не может открыть project.
- Отозванный API key сразу перестаёт работать.
- Viewer может читать, но не решать approvals и не менять settings.
- Connector и MCP возвращают данные только своего project.
- Нужные audit и export evidence сохранены в разрешённом месте.
Частые проблемы¶
| Симптом | Вероятная причина | Что сделать |
|---|---|---|
| User видит чувствительную settings tab | Owner установил низкую minimum role | Проверьте Organization → Access control и role matrix |
| API скрытой вкладки ведёт себя не так, как ожидалось | Tab visibility и endpoint authorization — разные controls | Проверьте запрос с нужной ролью и сообщите о server-side gap |
| API key нельзя восстановить | Plaintext намеренно показывается один раз | Отзовите key и создайте замену |
| После disconnect остались historical knowledge | Удаление connector не означает data deletion | Примените утверждённый export и retention process |
| После rotation перестал работать write-back | Connector использует старую identity или потерял scopes | Переподключите, проверьте minimum scopes и безопасное действие |
| Данные проекта появились не в том context | Был активен другой project или подозревается boundary defect | Остановите работу, сохраните evidence и эскалируйте без копирования customer data в ticket |
Следующий шаг¶
Проверьте members и roles, затем настройте audit, export и retention.