Tenant Isolation for AI в 2026: как не смешать контекст, логи и права между клиентами
Tenant isolation for AI в 2026: разделение prompts, retrieval, memory, traces, caches и tool permissions в multi-tenant LLM-системах.
Tenant isolation for AI в 2026 важна потому, что multi-tenant LLM-система смешивает сразу несколько чувствительных слоёв: prompts, retrieved docs, user memory, tool permissions, traces, caches и иногда даже human review artifacts. Если хотя бы один из этих слоёв не учитывает tenant boundary, система может утекать не только через базу данных, но и через assembled context, shared cache или observability.
Tenant isolation для AI — это не только про базу данных. Даже если таблицы разделены правильно, ошибка всё ещё может возникнуть в retrieval, prompt assembly, trace logging или review queue, где данные разных клиентов случайно оказываются рядом.
Самый опасный anti-pattern - думать, что tenant isolation заканчивается на row-level access в storage. Для LLM-приложения это только начало. Реальная утечка часто происходит позже: в кэше, assembled prompt, memory layer, observability или tool routing.
retrieval и observability требуют не меньшей изоляции, чем storage;
human review queue тоже может стать cross-tenant leak.
Без техники
База разделена по tenant_id, но retriever, cache и traces живут почти в общем пространстве.
С техникой
Tenant boundary enforced в storage, index, prompt assembly, cache keys, logs, review queue и tool permissions. Пересечение становится не случайностью, а явным инцидентом.
ПромптIsolation intuition
Где в AI-системе tenant leak часто возникает позже всего и поэтому недооценивается?
Ответ модели
Часто в observability, cache и human review artifacts. Базу обычно изолируют раньше, а вот assembled context и traces долго остаются полуобщими.
Даже при хорошей storage isolation можно ошибиться здесь:
shared vector index без tenant filter;
cache key без tenant dimension;
search snippets без provenance boundary;
stale summary memory reused across tenants.
Именно эти ошибки часто не видны как obvious database bug, но приводят к реальному leakage.
Если ответ может быть переиспользован из cache, в cache key почти всегда должны входить tenant, locale, policy version и route. Иначе оптимизация очень быстро становится cross-tenant risk.
Практический совет: tenant boundary стоит логировать так же явно, как trace_id. Если по трейсу нельзя быстро понять, к какому tenant относился run и кто имел право его видеть, изоляция почти наверняка неполная.
Проверьте себя
1. Почему tenant isolation в AI не заканчивается на базе данных?