Перейти к содержимому

Скоупинг источников и учётных данных

Скоупинг источников и учётных данных (modules/sourcescope) отвечает на один вопрос во время выполнения: когда агент или сессия обращается к подключённому источнику — MCP-серверу, модели, провайдеру, базе знаний или источнику данных — находится ли этот актор в области и какая ссылка на учётные данные применяется? Модуль LIVE: таблица привязок, её API записи и резолвер, который вызывают рантайм-PEP, — всё поставляется в бинарнике.

Это модуль, а не столбец, потому что область, которую он обеспечивает, не является свойством какой-либо одной сущности-источника — MCP-конфигурация, модели, провайдеры и базы знаний живут в разных модулях, и только ось агент/сессия/ресурс вообще несёт рабочее пространство. Область — это привязка: (источник) → (рабочее пространство или группа агентов), с необязательной скоупленной ссылкой на учётные данные. Этот модуль владеет той таблицей привязок и резолвером.

/v1/m/sourcescope/bindings — это стандартная CRUD-поверхность, ограниченная sourcescope:binding:read и :binding:write. Привязка нацелена на один тип источника (mcp, model, provider, knowledge, data) и одно дерево областей (workspace, agent_group) и несёт CredRef без значения — логическое имя, локатор ref_kind (env, vault, secret_manager, file, other) и необязательную замаскированную подсказку. Ни одно поле не может содержать пригодный к использованию секрет; обработчик отклоняет встроенные учётные данные — тот же инвариант минимума данных, что и у capabilities.mcp_config.secret_refs.

Решение является deny-closed и составным, а не вторым движком авторизации:

  • Содержание (containment) — источник, привязанный к рабочему пространству W, разрешим агентом или сессией в W без какой-либо дополнительной настройки.
  • Грант (grant) — охватывающий x-models, скоупленный Cedar-грант из vi-governance открывает чужое рабочее пространство.
  • RBAC — общетенантная авторитетность по-прежнему видит всё; рабочее пространство — это мягкая изоляция, тенант — жёсткая граница.
  • Запрет (forbid) — скоупленный Cedar-forbid переопределяет всё вышеперечисленное.

Гейт является аддитивным: непривязанный источник остаётся глобальным для обратной совместимости; привязанный источник без содержащей области, без гранта и без RBAC запрещается. Резолвер подключён как ScopeGate на цепочке выполнения модели и на извлечении viii-knowledge.

  • Это только привязка ссылок. Потребление скоупленных учётных данных в реальном вызове провайдера и рантайм-MCP-брокер, который дозванивается до сервера от имени агента, пока не существуют в дереве — резолвер возвращает ссылку в области, но ничто здесь не использует её для аутентификации исходящего вызова.
  • Область актора берётся из агента/сессии, названных в ссылке на актора вызывающего. Значения области читаются из сохранённой строки (вызывающий не может внедрить рабочее пространство), но выбор агента — это выбор вызывающего; привязка этой ссылки к принципалу — последующая работа по упрочнению. См. честность и ограничения.
  • Управление (vi) — алгебра Cedar-грантов/запретов и RBAC, которые компонует резолвер.
  • Модели (x) — цепочка выполнения, где работает ScopeGate.
  • Знания (viii) — управляемое извлечение, второе место, где гейтит резолвер.