AIRUS DataAuthorizationOps

Документ закрыт в SharePoint. Но connector скачал его, vector index сохранил, reranker прочитал, модель получила в prompt — и только потом система гордо сказала «пользователю доступ запрещён». Охрана сработала, но уже внутри хранилища. AIRUS гарантирует не то, что модель «не покажет лишнее», а что лишнее ВООБЩЕ не попадёт модели на вход.

Vector index наследует права источника

Source ACL Mirror
AIRUS хранит отдельную актуальную копию прав источника (users, groups, inheritance, allow, explicit deny, temporary grants) — обновляется независимо от embeddings, поэтому изменение прав не требует переиндексирования.
Pre-retrieval Security Trimming
Запрещённый chunk не попадает в candidate set ещё до vector retrieval и reranking. AND-логика: source_acl ∧ data_class ∧ route policy — не OR.
Existence Hiding
Для чувствительных объектов forbidden = not found: запросивший не видит названий, metadata и similarity denied-документов — только счётчик. Denied-имена доступны лишь в audit view.
Near-real-time Revocation
Удалили доступ — AIRUS блокирует документы, cache и agent memory. Propagation измеряется по SLA: standard 15м / business 5м / enterprise 60с / critical 10с.
Document level

Доступ ко всему документу

Chunk level

Разные разделы — разным группам

Row level

Записи CRM, договоры, закупки

Field level

Сумма, ПДн, реквизиты, комментарии

Data Access Receipt — доказательство, а не зелёная надпись

User: Иванов И.И.        Agent: ContractOps 4.8
Query: «Какие штрафы предусмотрены договором?»
Sources considered: 184   authorized: 37   denied: 147
Chunks retrieved: 8       sent to model: 5
Policy: LEGAL-PROJECT-14  masked fields: 2
Decision: COMPLIANT      (sha256 receipt)

CISO видит точную цепочку: какие данные рассматривались, что отброшено, что попало модели и по какой policy. Context Lineage связывает каждый фрагмент ответа с source object и permission decision.

Честно про слой

  • Движки детерминированы: security trimming (AND-логика, explicit-deny-wins, default deny), field masking, existence hiding, revocation propagation + SLA, ACL-bound cache permission hash, context lineage, data access receipt (sha256).
  • Правило зашито: tenant retrieval/authorize ВЫЧИСЛЯЕТ authorized set из ЗАПИСАННЫХ DataObject + ACE + principal-set (не из тела); удалённые объекты исключаются из retrieval. Route-policy fail-closed: sensitive-класс без trusted RU-route → deny (не fail open).
  • Что enforced: в retrieval/authorize — document/object level + classification + route. В knowledge RAG (#27) chunk-ACL применяется ДО cosine ranking (см. ниже). Field masking и row-level source — отдельные движки; их полная композиция в query path — roadmap.
  • Existence hiding — форма ответа: principal-facing view скрывает denied объекты полностью; в RAG-квитанции число/наличие denied-чанков не раскрывается (утечка существования); denied keys — только в audit view.
  • Pre-retrieval enforced (#27): knowledge RAG больше НЕ фильтрует после scoring — ACL-предикат вшит в row-query до cosine: запрещённый чанк не читается из хранилища, не участвует в ranking/reranker, не попадает в top-k, ответ и citations, не расходует retrieval-бюджет (starvation закрыт). Layer-2 re-verify перед сборкой контекста. Честно enforced для этой архитектуры (pgvector нет → in-app cosine = ranking). Roadmap: index-level ACL-предикат (pgvector), реальные connectors (SharePoint/1С/CRM), удаление embeddings/cache/memory, webhook ACL sync, chunk-lineage-from-source, derived-data taint, encrypted vector search.
  • Principal set: membership в v0 передаётся; реальный IdP group resolution (сотни групп) — roadmap.
  • 152-ФЗ: классификация и contains_personal_data гейтят retrieval, но legal matrix illustrative и требует утверждения профильным юристом и ответственным за ПДн.
  • Поверх, не вместо: AuthorizationOps (PDP), IdentityOps (principal), knowledge RAG. Money N/A; LedgerService не трогается.