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

Каталог коннекторов и уровни покрытия

Эта страница — каталог первичных (first-party) коннекторов и, для каждого, честный уровень покрытия, который он способен поддерживать. Она дополняет подключение источника, где объясняется модель коннектора (только наблюдение, минимум данных, три вида наблюдения) — прочитайте её сначала. Эта страница отвечает на следующий вопрос: какие источники существуют и насколько хорош сигнал каждого из них?

Покрытие разбито на уровни по тому, что аудиторская поверхность системы способна честно рассказать вам, а не по тому, насколько нам хотелось бы, чтобы она могла. Уровни в том виде, в каком они используются во всей документации:

  • Cooperative — агент или платформа, сообщающие о том, что они сделали (OpenTelemetry, административный API поставщика). Наивысшая точность при наличии; зависит от того, сотрудничает ли источник.
  • Clean — хранилище, которое классифицирует чтение и запись нативно, взятое дословно из его собственного аудиторского следа (SQL-аудит, журналы доступа к данным объектного хранилища / хранилища данных).
  • Lossy — хранилище, аудит которого не может чисто отделить чтение от записи или одного вызывающего от другого (хранилища документов, lineage). Рёбра фиксируются, но часто как approximate.
  • Impossible passively — система без пригодной пассивной аудиторской поверхности (in-memory-кэши, встроенные однофайловые базы данных). Здесь нет честного сигнала «чтение прежде всего»; продукт не делает вид, что это не так.
  • Approximate-by-attribution — доступ реален, но атрибуция приписана роли, процессу или общей учётной записи, а не разрешённому агенту, поэтому ребро является approximate.
  • Untrusted hint — заявленная возможность (аннотация инструмента MCP), подтверждаемая перекрёстно, но никогда не принимаемая на веру в одиночку.

Источники наивысшей точности при их наличии. Источник среды выполнения Claude Code работает вне процесса как встроенный плагин (обычная dev-сборка опускает его, и загрузка честно выдаёт предупреждение, а не выглядит исправной).

ВидНаблюдаетПримечания
claudeТелеметрия инструментов Claude Code OTLP + интроспекция MCP → рёбра / стоимость / находкиПлагин вне процесса; attributed при наличии идентичности на уровне агента, иначе approximate
claude-apiОбразцы стоимости Claude Admin-API + находки о состоянии управленияВ процессе; no-op в офлайне (нет административного ключа)
claude-complianceДоказательства из ленты активности Claude Compliance → находкиТолько GET по построению; no-op в офлайне
claude-configСтатическое дерево конфигурации Claude (субагенты / Skills / плагины) → рёбра заявленной возможностиТолько метаданные — поверхность возможностей, а не наблюдаемый доступ
claude-consoleIAM организации Claude → находки о состоянии SSO/SCIM (реестр идентичностей + источник)
claude-wifРеестр нечеловеческих идентичностей / рабочих идентичностей Anthropic + рёбра разрешённой областиМоделирует объявленную оператором федерацию; помечает риски статических ключей
claude-managed-agentsИнвентарь управляемых агентов Claude + события потоков (приёмник webhook + GET-опросчики)Потоковый источник (poll_seconds: 0); в офлайне no-op
claude-projectsИнвентарь проектов организации Claude (участники / API-ключи) + объявленная оператором политика проектовAdmin API только для чтения; в офлайне no-op
claude-apps-gatewayСостояние Claude apps gateway, объявленные гранты моделей и ingest событий аудита → топология + находкиЧитает существующий gateway.yaml и необязательный JSONL-экспорт аудита
claude-batchИнвентарь Anthropic Message Batches + Files API, принуждение batch-политик, истечение хранения загрузокНикогда не читает payload или содержимое файла; без admin-ключа выдаёт честную offline-находку
claude-routinesИнвентарь Claude Code Routines (плановые триггеры) → рёбра + находки по cadence/reviewТолько GET; содержимое prompt только хешируется; потоковый (poll_seconds: 0)
coworkПриёмник журналов Claude Cowork OTLP/HTTP → свидетельства активностиВнепроцессный плагин (изоляция зависимости OTel-proto)
cowork-analyticsАналитика вовлечённости Claude CoworkВ процессе (только клиент modelprovider)
codexОбразцы стоимости OpenAI Codex, свидетельства usage/auth/admin-аудита, находки adoptionAdmin API только для чтения; закрытые тарифом поверхности деградируют до находки состояния
cursorСтоимость по счетам Cursor Admin API, журналы аудита команды, инвентарь участников, состояние бюджетаЗакрытые тарифом 403/404 деградируют до находки, никогда не приводят к сбою

Нейтральный к поставщику профиль GenAI-фреймворков (gen_ai.*) — opt-in

Заголовок раздела «Нейтральный к поставщику профиль GenAI-фреймворков (gen_ai.*) — opt-in»

Агентные фреймворки, которые обещает каталог — LangGraph / LangChain, CrewAI, AutoGen / Microsoft Agent Framework, Google ADK (а также OpenAI SDK, LlamaIndex, Pydantic-AI, Strands, …) — не эмитят схему Claude claude_code.*. Они сходятся на семантических соглашениях OpenTelemetry GenAI (gen_ai.*). Тот же источник claude принимает и этот профиль, так что OTel-инструментированный парк питает access map и FinOps через один приёмник, а не через отдельный коннектор на каждый фреймворк — интеграция с наибольшим рычагом.

Этот профиль является OPT-IN и честно помечен как экспериментальный. Вся область gen_ai имеет статус OpenTelemetry Development (не Stable, июнь-2026), поэтому она активируется только когда вы воспроизводите собственный гейт спецификации. Установите в semconv_opt_in коннектора список через запятую, содержащий токен gen_ai_latest_experimental (зеркало OTEL_SEMCONV_STABILITY_OPT_IN). Выключенный по умолчанию, сигнал gen_ai.* всё равно питает сторожевой таймер тишины, но не отображает ни ребра, ни стоимости — мы никогда не заявляем стабильность, которой у соглашений нет.

Поскольку соглашения находятся в процессе изменений, приёмник двухимённый (он читает текущий ключ и устаревшего предшественника, всё ещё встречающегося в реальном мире) и многосигнальный (он отображает трассировочные spans, лог-событие gen_ai.client.inference.operation.details и распознаёт клиентские метрики):

Что он читаетТекущий ключТакже принимается (устаревший, всё ещё эмитируется)
Поставщикgen_ai.provider.namegen_ai.system (по умолчанию для v1.36.0-или-ранее; Google ADK, напр. gcp.gemini)
Входные токеныgen_ai.usage.input_tokensgen_ai.usage.prompt_tokens (OpenLLMetry/Traceloop → LangChain/LangGraph/CrewAI)
Выходные токеныgen_ai.usage.output_tokensgen_ai.usage.completion_tokens (то же)
Атрибут gen_aiотображается вуверенность
gen_ai.usage.* (токены)CostSample (происхождение estimated — токены, а не выставленная стоимость)
gen_ai.provider.name / request.model / response.modelпоставщик стоимости + модель (предпочтительно response)
gen_ai.operation.name = execute_tool + gen_ai.tool.nameребро доступа агент→инструмент (режим unknown)attributed
gen_ai.conversation.id + gen_ai.agent.{name,id}ребро атрибуции беседа→агент + ссылка на сессиюattributed

Матрица поддерживаемых диалектов (нормализатор нескольких поколений)

Заголовок раздела «Матрица поддерживаемых диалектов (нормализатор нескольких поколений)»

Соглашения GenAI менялись в трёх сосуществующих поколениях в реальных парках 2026 года. Приёмник определяет поколение для каждого сигнала по эксклюзивным для поколения маркерам и штампует нормализованное событие соответствующим пином semconv (находка о состоянии genai.semconv записывает активный набор за запуск; одна информационная находка drift за запуск помечает каждый увиденный устаревший диалект, чтобы вы знали, каким паркам нужно обновить инструментацию). Содержимое сообщений никогда не читается ни из одного поколения — ключи содержимого выступают только как маркеры диалекта (состояние минимума данных).

Обнаруженный диалектПоставленный пинЭксклюзивные маркеры (проверено)Эмитируется (проверено июнь-2026)
Устаревший OpenLLMetry/Traceloop (до semconv)openllmetryиндексированные gen_ai.prompt.{i}.* / gen_ai.completion.{i}.*, gen_ai.usage.prompt_tokens/completion_tokens, llm.usage.total_tokens, llm.request.type, llm.vendor, traceloop.span.kindTraceloop-инструментированные LangChain / LangGraph / CrewAI, закреплённые < openllmetry v0.55.0 (выпущена 2026-03-29). Поставщики с заглавной буквы (OpenAI, Langchain) приводятся к нижнему регистру, чтобы FinOps не разделял по регистру
События v1.36-или-ранее (собственное имя спецификации)1.36.0gen_ai.system; пять лог-событий на сообщение gen_ai.{system,user,assistant,tool}.message, gen_ai.choice (распознаются по имени — их единственный атрибут необязателен)LLM-spans Google ADK (gcp.vertex.agent), AutoGen (autogen), Microsoft Agent Framework — все ещё эмитят gen_ai.system
Сообщения v1.37+ (текущие)1.41.1gen_ai.provider.name, gen_ai.input.messages / gen_ai.output.messages / gen_ai.system_instructions, событие gen_ai.client.inference.operation.details, gen_ai.workflow.nameОфициальные инструментации OTel; openllmetry ≥ v0.55.0

Сигнал, несущий только ключи, чьи имена идентичны во всех поколениях (напр., ADK-span invoke_agent: операция + агент + беседа, вообще без ключа поставщика), нормализуется под текущим пином — применяемое отображение байт-идентично, а реальный релиз производителя невозможно узнать из протокола передачи.

Вверху по течению существует ровно четыре атрибута mcp.* (mcp.method.name, mcp.protocol.version, mcp.resource.uri, mcp.session.id); инструмент едет на gen_ai.tool.name, а промпт — на gen_ai.prompt.name. Приёмник объединяет эти трассировки с собственными фактами управления MCP продукта, повторно используя те же виды ресурсов, что эмитирует путь Claude:

Сигнал MCPотображается в
любой клиентский span mcp.* с server.addressребро сессия→mcp.server (объединяется с рёбрами claude_code.mcp_server_connection)
tools/call + gen_ai.tool.nameребро доступа mcp.tool (server.address/tool, когда конечная точка известна) — тот же вид, что вызовы Claude mcp__server__tool
resources/read / resources/subscribe + mcp.resource.uriребро mcp.resource в режиме чтения (URI санитизирован: учётные данные/запрос удалены)
prompts/get + gen_ai.prompt.nameребро mcp.prompt в режиме чтения (поверхность промптов)
spans вида SERVER / метрики `mcp.clientserver.*.duration`

Spans агентов (разделение invoke_agent client/internal + invoke_workflow, semconv v1.41 — Development)

Заголовок раздела «Spans агентов (разделение invoke_agent client/internal + invoke_workflow, semconv v1.41 — Development)»

v1.41.0 разделила invoke_agent на вариант CLIENT (удалённая агентная служба) и вариант INTERNAL (в процессе). Реальные фреймворки сегодня нарушают этот вид (AutoGen и Microsoft Agent Framework жёстко прописывают CLIENT для агентов в процессе; Google ADK использует INTERNAL), поэтому приёмник классифицирует вызов как удалённый только когда span — CLIENT и несёт server.address — это даёт ребро делегирования беседа→genai.agent.remote. Всё остальное остаётся вызовом в процессе, охваченным ребром атрибуции беседа→genai.agent: чисто деградировано, никогда не сфабрикованное «удалённое». invoke_workflow (новое в v1.41; команды в стиле CrewAI) отображает ребро беседа→genai.workflow. Spans агентов остаются вверху по течению Development (экспериментальными) — никакая стабильность не заявляется.

Стабильное против экспериментального, честно: механизм (гейт opt-in, обнаружение диалекта + двухимённые чтения, отображение span/event/metric, запечатанные формы CostSample/EdgeObservation) стабилен в этом продукте. Словарь, который он отображает (ключи gen_ai.*/mcp.*, перечисление операций), вверху по течению имеет статус Development и может снова переименоваться; именно поэтому приёмник нормализует каждое поколение, а не закрепляет одно. v1.41.1 — последний версионированный релиз соглашений gen-ai (они переехали в open-telemetry/semantic-conventions-genai, у которого по состоянию на июнь-2026 нет релизов). Примечания:

  • Стоимость дедуплицируется по идентификатору W3C span. Когда одна операция сообщает об использовании как на своём span, так и в своём событии operation.details (они делят один span id), она тарифицируется один раз, а не дважды.
  • Метрики питают живучесть, никогда — стоимость. gen_ai.client.token.usage — это агрегат; span/event является авторитетным использованием на уровне операции, поэтому тарификация и метрики тоже привела бы к двойному счёту. Гистограммы длительности mcp.* v1.39 распознаются тем же образом.
  • Поставщик может быть unknown. Если span несёт модель, но не поставщика/систему, стоимость атрибутируется unknown, а не угадывается из идентификатора модели.
  • Счёт только общего числа токенов не разделяется. Устаревший llm.usage.total_tokens без разделения на prompt/completion никогда не угадывается в input/output (без сфабрикованной стоимости).
  • OpenInference (Arize/Phoenix) — другое соглашение и не принимается этим профилем — читаемые здесь ключи llm.* (llm.request.type, llm.usage.total_tokens, llm.vendor) являются устаревшими маркерами OpenLLMetry, а не пространством имён llm.* от OpenInference.

Эти источники читают объявленную локальную конфигурацию агента и эмитят permitted- рёбра и находки состояния. Это не живые трассы исполнения; если у фреймворка есть нативный OTEL, живое использование по-прежнему поступает через ingest gen_ai.* выше.

ВидНаблюдаетЧестное покрытие
opencodeЛокальные слои JSONC opencode.json / opencode.jsonc → состояние permission и managed/admin override, разрешённые рёбра MCP/tool/custom-agent, находки credential-in-config/share/autoupdate/OTEL и фрагмент для авторингаТолько объявленная конфигурация. Managed-слой обнаруживается локально, но это не неизменяемый замок: runtime OPENCODE_PERMISSION, перенаправление каталога тестов и удалённая конфигурация организации остаются вне этого читателя. Нативный OTEL может подавать живое использование gen_ai.* через out-of-band-экспортёр OTEL_*
gemini-cliСлои settings.json Gemini CLI (system/user/workspace) → разрешённые рёбра MCP/tool, состояние пробелов принуждения, инвентарь эффективной конфигурацииТолько объявленная конфигурация; живое использование идёт через ingest gen_ai.* (CLI эмитит его нативно). Не Gemini API (это поверхность hosted-provider)
openhandsconfig.toml OpenHands + env → состояние sandbox/model-pinning/credential/telemetry, разрешённые рёбра MCP/actionТолько объявленная конфигурация; живое использование через нативный OTEL gen_ai.*
gooseprofiles.yaml Goose (Block) + env → состояние admin-settings/model-pinning/extension/tool-approval, разрешённые рёбра extensionsТолько объявленная конфигурация
clineПространства имён Cline / Kilo Code в VSCode settings.json → состояние auto-approve/MCP-allowlist/credential/model-pinningТолько объявленная конфигурация; upstream не имеет нативного OTEL
grokGrok Build (xAI), терминальный coding-agent, прочитанный из ЛОКАЛЬНОЙ конфигурации: подключение hooks, события с документированным veto и объявляемое состояние governanceНЕ коннектор xAI API (xai читает каталог и стоимость, включая grok-build-0.1 среди МОДЕЛЕЙ). Этот читает АГЕНТА, пересечения нет. Половина НАБЛЮДЕНИЯ идёт через уже эмитируемый Grok Build ingest OTLP. PostureEnforced заявляет только PreToolUse, единственное событие с документированным veto; остальное — observed
openclawopenclaw.json OpenClaw (обнаружение JSON5, ограниченный $include) → состояние gateway/channel/tool/sandbox/skill/model по агенту, объявленные рёбра channel/skill/modelТолько объявленная конфигурация; inline PEP hook upstream не подтверждён
hermesconfig.yaml Hermes Agent + деревья профилей + managed scope → состояние terminal/channel/skill/security/model/MCP, объявленные рёбраТолько объявленная конфигурация; inline PEP hook и нативный OTEL upstream не подтверждены
google-adkЭкспортированный JSON Session Google ADK 2.0 → инвентарь agent/app, sub-agents, вызовы tool-функций, передачи, дрейф approved-tool, корреляция Vertex reasoningEngineЭкспорт только для чтения; никогда содержимое сообщений. Отличается от платформенной поверхности google-agent
agents-mdОбход репозитория по файлам инструкций агентов (AGENTS.md и файлы памяти/инструкций каждого агента) → дрейф базовой линии SHA-256 + скан instruction-injection / hidden-Unicode / секретовМинимальные данные: очищенные пути + хешированные детали, никогда содержимое
mcpbУстановленные / распространённые desktop-расширения .mcpb → скан состояния манифеста, дрейф enterprise-allowlist, проверка подписи PKCS#7PERMITTED-vs-OBSERVED на поверхности расширений
codex-managed-configФайлы managed-config OpenAI Codex → состояние принуждения + дрейф относительно авторской базовой линииТолько наблюдение: не может остановить разработчика, обходящего managed-слой (зеркало managed-settings для Codex)

Clean — нативный аудит хранилища (чтение/запись дословно)

Заголовок раздела «Clean — нативный аудит хранилища (чтение/запись дословно)»

Эти коннекторы читают собственный аудиторский след хранилища и берут классификацию чтение/запись дословно — никогда не выводя её из текста запроса. pgaudit и s3cloudtrail — канонические источники R/RW, вокруг которых построена access map (их дефисные псевдонимы pg-audit / s3-cloudtrail тоже разрешаются).

ВидНаблюдает
pgauditСлед PostgreSQL pgAudit (csvlog/jsonlog) → доступ R/RW к таблицам, READ/WRITE дословно из CLASS pgAudit
s3cloudtrailСобытия S3 AWS CloudTrail → R/RW объектов, чтение/запись из флага readOnly CloudTrail (также выявляет вызовы модели Claude-on-Bedrock)
snowflake-auditНативная история доступа Snowflake
databricks-ucАудит Databricks Unity Catalog
bigquery-auditАудит доступа к данным BigQuery
redshift-auditАудит Amazon Redshift
mssql-auditАудит SQL Server
oracle-auditУнифицированный аудит Oracle
gcs-auditАудит доступа к данным Google Cloud Storage
azure-blob-auditАудит Azure Blob Storage

Облачный management plane — инвентарь org/tenant + активность control plane

Заголовок раздела «Облачный management plane — инвентарь org/tenant + активность control plane»

Паритет по трём облакам для плоскости управления — отличной от плоскости данных на уровне ресурсов, которую покрывают коннекторы аудита хранилищ выше. Каждый из них — живой, только для чтения API-клиент control plane облака на уровне org/tenant: он обнаруживает топологию ресурсов (рёбра инвентаря, mode=unknown, attributed) и читает нативную ленту аудита облака для активности control plane (рёбра identity→…api, классифицированные по чтению/записи). Они завершают матрицу, которую AWS уже якорит с s3cloudtrail (плоскость данных) плюс коннектор aws уровня учётной записи IAM/CloudTrail. Оба работают в процессе и безопасны в офлайне (нет учётных данных ⇒ Gather является no-op); оба наблюдают только control plane — никогда полезную нагрузку, секрет, ключ или свойство ресурса.

ВидНаблюдаетЧестное покрытие
gcp-auditGCP Resource Manager / IAM (топология org→folder→project→service-account) + Cloud Audit Logs (Admin Activity + Data Access) → identity→gcp.apiClean там, где логируется: Admin Activity — это запись по определению типа лога, Data Access — чтение/запись из стандартного глагола метода. Lossy там, где логирование Data Access отключено (по умолчанию выключено в GCP) или глагол метода нестандартен (unknown, никогда не угадывается). approximate для объявленных общих принципалов; principalEmail сходится с реестром SPIFFE/SA
azure-activityAzure Resource Graph (топология tenant→subscription→resource) + Azure Monitor Activity Log (операции control plane) → identity→azure.apiClean для записей/удалений control plane (дословно из действия RBAC). Обобщённый суффикс action является lossy (unknown — он может читать или писать). Чтения плоскости данных отсутствуют в Activity Log (их покрывает плоскость данных azure-blob-audit / azurekeyvault). approximate для общих вызывающих; вызывающий objectId/appId сходится с реестром Entra
cloudflareEdge-estate Cloudflare — Workers, бакеты R2, задачи Logpush через REST API v4 → рёбра топологииТолько инвентарь (в этом коннекторе нет audit feed); ограниченный токен только для чтения. Отличается от AI-поверхностей cloudflare-ai-gateway / MCP portals

Opt-in для GCP Data Access и пробелы Azure read-not-logged являются честными непрозрачными рёбрами этой плоскости: отсутствие ребра активности не является доказательством отсутствия доступа там, где эти логи выключены. Полная таблица уровней по каждому облаку находится в docs/contracts/S165-connectors-cloud-management.md в поставляемом дереве исходного кода.

Поставщики hosted-моделей — каталог, состояние и учёт

Заголовок раздела «Поставщики hosted-моделей — каталог, состояние и учёт»

Эти источники управляют учётными записями и каталогами hosted-провайдеров моделей. Они не проксируют inference; если у провайдера нет пригодного usage API, расходы оцениваются Meter коннектора вокруг пути inference, а не извлекаются из общего billing feed.

ВидНаблюдаетЧестное покрытие
openaiИспользование и стоимость платформы OpenAI (org API), каталог моделей и API-ключейOrg/admin-ключ только для чтения; без payload плоскости данных. Отличается от azure-openai, который обращается к настоящим поверхностям Azure, а не к путям OpenAI-org
geminiКаталог hosted-моделей Gemini (Google) и подключённый оператором экспорт использованияПоверхность hosted-provider. Отличается от gemini-cli, наблюдающего локальные настройки CLI, и vertex, покрывающего enterprise-поверхности Vertex. На этом пути Google не предоставляет общий usage API, поэтому usage — только подключённое оператором
deepseekHosted-каталог DeepSeek, доступность баланса учётной записи и состояние суверенитета PRCНет общего usage API; стоимость измеряется вокруг inference из объявленных цен
mistralКаталог Mistral и состояние governanceНет публичного usage/billing/spending-cap API; стоимость измеряется вокруг inference из цен списка
xaiЖивой каталог xAI/Grok, billing endpoints, инвентарь ключей/ACL, состояние кредита и лимита расходовДля стоимости используются management billing endpoints только для чтения; учётные данные управления и inference различаются
glmОбъявленный каталог Zhipu GLM / Z.ai, Meter по ценам списка в USD, проверка entitlement и состояние суверенитетаТолько каталог + Meter: для GLM не подтверждены usage, billing, balance, admin, key или organization API. Предупреждение о связи с PRC / Entity List относится к поверхностям z.ai и bigmodel.cn
vertexКаталог Google Vertex AI, использование токенов по модели (Cloud Monitoring), opt-in billed cost (billing export) и opt-in состояние Model ArmorEnterprise-поверхность Google, которой нет у пути AI Studio; у GCP нет API стоимости реального времени
azure-openaiРазвёртывания + модели Azure OpenAI / AI Foundry (ARM), использование токенов Azure Monitor и поверхности стоимостиКлиент management plane только для чтения; без payload плоскости данных
openrouterЖивой каталог OpenRouter (цены USD/MTok), состояние usage/limit учётной записи, дрейф политики разрешённых моделейBilled cost через экспортируемый MeterCall; в офлайне no-op
cohereЖивой каталог моделей Cohere (Models API с курсорной пагинацией)Нет публичного usage/billing/org API (только dashboard) — честное ограничение покрытия; стоимость измеряется вокруг inference из цен списка
falИнвентарь жизненного цикла API-ключей fal.ai + состояние ротации; стоимость измеряется вокруг queue APIНет публичного usage/audit API — управление по жизненному циклу ключа; глубокие поверхности закрыты продажами и помечены UNVERIFIED

Self-hosted inference — локальные каталоги и использование

Заголовок раздела «Self-hosted inference — локальные каталоги и использование»

Self-hosted inference всегда в области действия, поэтому это первоклассный источник, а не дополнение к gateway. Этот уровень наблюдает, что локальный runtime действительно обслуживает.

ВидНаблюдаетЧестное покрытие
localКаталог моделей Ollama (/api/tags), резидентность Ollama (/api/ps) — какие модели загружены сейчас, их разделение GPU/CPU и срок выгрузки — и использование токенов vLLM через OpenAI-совместимую поверхностьРезидентность сообщается как состояние, а серьёзность равна РАЗМЕЩЕНИЮ: полностью находящаяся в VRAM модель — informational, а модель в CPU или РАЗДЕЛЁННАЯ между CPU и GPU помечается, поскольку оператор платит задержкой, не получая предупреждения. Ollama не публикует общие token metrics, поэтому не даёт учёта. Источник по-прежнему не даёт per-call identity или policy на локальном inference; для этого нужен gateway или путь OTel. Ollama на localhost не требует учётных данных, поэтому пустая конфигурация — рабочее значение только для чтения; отключение сервера задаётся ЯВНО пустым URL, а оба пустых значения дают no-op

Подстраховка ядра — eBPF / Tetragon (чистый сигнал, приблизительная атрибуция)

Заголовок раздела «Подстраховка ядра — eBPF / Tetragon (чистый сигнал, приблизительная атрибуция)»

Несотрудничающая половина рва: где кооперативный путь видит то, что агент сообщает, здесь видно то, что сделало ядро — чтения/записи файлов и исходящие соединения — даже когда агент отключает собственную телеметрию. Доступ — это истина на уровне ядра (сигнал уровня clean о том, что произошло); атрибуция намеренно честна относительно своего предела — ядро атрибутирует идентичности среды выполнения (процесс/cgroup/контейнер), никогда — разрешённому агенту, поэтому каждое ребро eBPF является approximate. Оно никогда не расшифровывает и не инспектирует полезные нагрузки (оно слепо к телу TLS).

ВидНаблюдаетЧестный предел
ebpfСобытия ядра Tetragon → R/RW файлов (маска MAY_*) и сетевые рёбра; опциональная находка анти-уклонения, когда агент действует на уровне ядра без кооперативной телеметрииАнонимный по агенту → всегда approximate; потоковая подстраховка, а не журнал на уровне агента

Он не загружает eBPF-программы сам: захват ядра выполняется Tetragon (отдельным закалённым DaemonSet). См. Требования к развёртыванию.

Lossy — рёбра фиксируются, часто приблизительно

Заголовок раздела «Lossy — рёбра фиксируются, часто приблизительно»
ВидНаблюдаетПочему lossy
mongo-auditАудит MongoDBХранилище документов; разделение вызывающих слабое
openlineageСобытия запусков OpenLineage → lineage наборов данныхLineage — не аудит на уровне вызова
delta-sharingАктивность получателей Delta SharingАтрибуция общего получателя

Они эмитят либо сторону permitted (объявленные гранты), либо доступы, атрибутированные роли / процессу / общей учётной записи, а не разрешённому агенту.

ВидНаблюдаетУровень
iceberg-catalogIceberg REST catalog → разрешённые гранты + выданные идентичностиpermitted
inference-gatewayМаршрутизация K8s Gateway API Inference-Extension → разрешённые маршруты инференсаpermitted
aws-kms / gcp-kms / azure-key-vaultАудит облачного KMS → рёбра доступа к ключам (никогда — материал ключа)approximate
external-secrets / sops / kmipМанифесты управления секретами / KMIP locate → рёбра выдачи/храненияapproximate (существование, а не использование)
istio-telemetryCRD Istio Telemetry → рёбра L7-мешаapproximate (распарсенные CRD, а не живые потоки)
egress-proxyЛог вердиктов egress-прокси → рёбра L7-egressapproximate
kong-auditЛоги аудита Kong → находки об изменении конфигурацииapproximate
ai-gatewayЗаписи использования Envoy AI Gateway → образцы стоимости (FinOps)поток стоимости
githubРепозитории GitHub как источники данных агентов → наблюдаемые рёбра доступа R/RW (сначала webhook, сверка опросом API) + разрешённые рёбра ACLobserved + permitted; потоковый (poll_seconds: 0)
gitlabРепозитории GitLab → наблюдаемые рёбра доступа R/RW + разрешённые рёбра ACLobserved + permitted; потоковый (poll_seconds: 0)

Наблюдатели состояния — находки, а не рёбра доступа

Заголовок раздела «Наблюдатели состояния — находки, а не рёбра доступа»

Наблюдатели «чтение прежде всего», выявляющие состояние (синхронизация/здоровье/дрейф, аномалии аутентификации) как находки; они никогда не мутируют estate.

ВидНаблюдает
runtimeГде работают ИИ-нагрузки (Linux procfs, демон Docker, Kubernetes API) → рёбра контейнмента + находки о здоровье (требует доступ к хосту — см. Требования к развёртыванию)
argocd / flux / crossplaneGitOps / CRD control plane → состояние синхронизации, здоровья, дрейфа, композиции
kerberosТелеметрия аутентификации KDC → находки Kerberoasting
aaaНаблюдения RADIUS / TACACS+ AAA
ssfПриёмник Shared-Signals / CAEP (kill-switch агента)
edugain / openidfedАгрегат федерации / цепочки доверия OpenID-Federation → состояние федерации
managed-settingsПолитика Claude managed-settings → разрешённые рёбра + находки дрейфа
envoy-ai-gatewayЭкспорт объявленной конфигурации Envoy AI Gateway → состояние gateway + дрейф политики gateway-vs-Olivares (конфигурационный сосед потока usage ai-gateway)
kong-agent-gatewayЭкспорт объявленной конфигурации Kong agent-gateway → состояние + дрейф политики
litellmЭкспорт объявленной конфигурации proxy LiteLLM → состояние + дрейф политики
bedrock-kbЗдоровье/конфигурация извлечения Amazon Bedrock Knowledge Bases (health-check Agent Runtime Retrieve) → находки состояния каждого KB + рёбра KB→data-source. Никогда RetrieveAndGenerate (без платного inference), никогда полное содержимое документа
takСостояние CoreConfig.xml TAK Server (+ необязательная проверка mTLS) и управляемый ingest Cursor-on-Target с минимальными данными (позиции в digest, uid хеширован)
a2aПиры Agent2Agent (A2A) v1.0 → обнаружение Agent Card + проверка подписи JWS/JCS (уровень доверия пира) и наблюдаемые взаимодействия task/message как рёбра agent↔agent. Только наблюдение — никогда не отправляет task; выпуск подписанных cards — отдельная возможность

Источник mcp интроспектирует MCP-серверы (stdio + Streamable HTTP) и эмитит рёбра возможностей, несущие заявленные подсказки R/RW сервера, плюс находки о ревизии протокола, поверхности возможностей и происхождении из реестра. Согласно спецификации MCP аннотация инструмента является недоверенным заявлением — претензией на возможность, подтверждаемой перекрёстно с наблюдаемым источником, никогда не принимаемой на веру в одиночку. (Кооперативный источник claude также интроспектирует MCP как часть своего OTLP-пути; mcp — это автономный интроспектор, который вы направляете на список серверов или на .mcp.json.)

ВидНаблюдаетУровень
mcpИнструменты/ресурсы/промпты MCP-сервера → рёбра заявленных возможностей + находки о состоянииuntrusted hint

Наблюдатели брокеров и мешей вне процесса

Заголовок раздела «Наблюдатели брокеров и мешей вне процесса»

Они несут тяжёлые деревья зависимостей сетевых протоколов, поэтому каждый работает вне процесса (зависимость никогда не линкуется в ядро). Один коннектор достигает многих целей.

ВидНаблюдает
kafkaАктивность топиков Kafka / Event Hubs / Redpanda / MSK
amqpAMQP-брокеры (RabbitMQ, Azure Service Bus)
nats / mqtt / cloudqueueАктивность NATS, MQTT, облачных очередей
debeziumПотоки change-data-capture Debezium
envoyСлужбы наблюдения Envoy ALS / ext_authz / ext_proc
hubbleДанные потоков Cilium Hubble

Они заполняют реестр нечеловеческих идентичностей, который обостряет атрибуцию (превращая рёбра approximate в attributed). Каждый источник с поверхностью грантов также эмитит свои рёбра разрешённого доступа (SignalPolicy) из Gather — сторону PERMITTED диффа permitted-vs-observed:

ВидРеестрРазрешённые рёбра
vaultсущности, группы, политикигранты пути ACL-политики (vault.path), раскрытые по каждой связанной сущности
ldapпользователи, служебные/компьютерные учётные записи, группычленство в привилегированных группах → гранты каталога (ldap.directory)
idp (Okta / Entra)пользователи, приложения/служебные принципалы, группыгранты назначения приложения / области (okta.app / entra.app)
infisicalмашинные идентичности, члены организации, проектыгранты проекта (infisical.project)
keycloakrealms, клиенты, роли, группы, пользователитолько реестр (no-op Gather)
pingone / forgerockРеестры каталогов PingOne / ForgeRock через тот же multi-provider reader (kind задаёт соответствующий provider; ping — псевдоним pingone)только реестр (no-op Gather)
spiffeзаписи регистрации SPIREтолько реестр (no-op Gather)

Установите as_source: true в записи identity для однократного прохода разрешённых грантов за загрузку, либо отдельную запись sources с poll_seconds для периодических повторных сканирований — никогда оба для одного вида (okta/entra делят один коннектор idp, поэтому только один экземпляр семейства idp может зарегистрироваться как источник на процесс). Членства в группах/ролях путешествуют только в типизированном снимке реестра, никогда как рёбра.

Гиперскейлерные реестры агентов федерируются только для чтения против реестра SPIFFE/WIF плоскости. Их строки на уровне агента (виды agent_identity / workload_identity) являются выделенными, не общими идентичностями, поэтому access map трактует их как твёрдую атрибуцию на уровне агента; вспомогательные строки из тех же источников (принципалы blueprint, поставщики учётных данных, агенты на базе служебных учётных записей) остаются приблизительными. Федерация никогда не пишет в реестр; экспорт в управляющие башни — отдельная, более поздняя возможность.

ВидФедерируетGather
entra-agentMicrosoft Entra Agent ID (идентичности агентов, пользователи-агенты, blueprints, принципалы blueprint, владельцы/спонсоры, вычисление сирот в снимке, opt-in мягко удалённые) через Graph v1.0находки nhi_longlived_credential, состояния CA/risky-agent/governance/отсутствия спонсора и opt-in наблюдаемые рёбра доступа агентов из beta auditLogs/signIns — добавьте запись sources с poll_seconds
agentcoreAWS Bedrock AgentCore Identity (рабочие идентичности, поставщики учётных данных token-vault) + движки AgentCore Policy/политики Cedar как коллекциинаходки дрейфа nhi_longlived_credential (поставщики статических API-ключей) — добавьте запись sources с poll_seconds
google-agentGoogle Agent Identity (reasoning engines Agent Runtime; идентичности агентов на базе SPIFFE) плюс состояние Agent Registry / Agent Gateway. Строки используют полный SPIFFE ID как ссылку, сходясь с реестром spiffe; Gather обнаруживает неатрибутированных агентов registry, теневые reasoning engines вне читаемого registry, рискованные аннотации MCP tools и состояние gateway registryнаходки состояния registry/gateway и обнаружение теневых агентов — добавьте запись sources с poll_seconds
agent365Реестр Microsoft Agent 365 (инвентарь на уровне пакетов, вкл. агентов без идентичности Entra) через Graph v1.0, client credentials с app permission или delegated token, opt-in детали пакетовнаходки гигиены реестра (заблокированные развёрнутые пакеты; external/shared-пакеты, развёрнутые для всех users) — добавьте запись sources с poll_seconds
foundry-agentsПроекты Microsoft Foundry, приложения/развёртывания агентов и текущие агенты Agent Service через ARM + Foundry Agent Service v1; коррелирует ссылки идентичности приложения с entra-agentВыведенные из ARM находки состояния приложения (нет Entra agent identity; неудачное развёртывание включённого приложения) — добавьте запись sources с poll_seconds
ai-control-towerИнвентарь цифровых активов ServiceNow AI Control Tower (Table API, только чтение)no-op (только реестр)
oasfДескрипторы агентов AGNTCY/OASF + верификация Agent Badge — EXPERIMENTAL до соответствия спецификации идентичности VCDM 2.0находки бейджей — добавьте запись sources с poll_seconds
onepasswordУчётная запись 1Password как хранитель secret_storeрёбра доступа к секретам по использованию элементов — добавьте запись sources с poll_seconds

Для семи видов с повторно опрашиваемым Gather (entra-agent, agent365, agentcore, foundry-agents, google-agent, oasf, onepassword) подключите половину реестра как запись identity без as_source, а половину рёбер/находок как отдельную запись sources с poll_seconds — не оба через as_source: true, который запускает сканирование лишь однажды за загрузку (и повторная регистрация того же вида отклоняется).

Объявленные в реестре владелец/спонсор ложатся на записи жизненного цикла NHI во время синхронизации реестра (та же семантика, что у PUT /nhi/{ref}/ownership), а заявленная реестром сирота (агент Entra, чей blueprint исчез) ложится на флаг registry_orphaned той же записи — sweep жизненного цикла ИЛИ-объединяет его в orphaned и эмитит находку nhi_orphaned, так что обнаружение сирот наблюдает федерированных агентов без какой-либо дополнительной обвязки. Источник vault-audit (под sources, не identity) следит за аудиторским устройством файлов Vault и эмитит наблюдаемый аналог разрешённых грантов vault для тех же ссылок entity:<name>.

Источники документов знаний (не покрытие access-map)

Заголовок раздела «Источники документов знаний (не покрытие access-map)»

Они питают модуль knowledge (модуль VIII), а не access map: они принимают содержимое документов для управляемого извлечения, эмитят ни одного ребра R/RW и не производят никакого наблюдения на шине. Модуль вытягивает их (List → Fetch) по запросу на приём (POST /v1/m/knowledge/kbs/{id}/ingest {"source":"<name>"}), поэтому они подключены к этому модулю — назовите их под documents в OLIVARES_SOURCES_CONFIG, а не sources. Каждый из них только для чтения и с минимумом данных: он несёт ACL и происхождение источника (никогда — личную почту; модуль маскирует тело перед сохранением).

ВидПринимает
gdriveДокументы Google Drive (Docs/Sheets/Slides/файлы)
confluenceПространства и страницы Atlassian Confluence
notionРабочие пространства, базы данных и страницы Notion
sharepointСайты и документы Microsoft SharePoint / OneDrive
s3contentСодержимое объектного хранилища (объекты S3 / R2 / GCS)
sap_odataСущности сервиса SAP OData как управляемые документы
salesforceОбъекты/записи Salesforce как управляемые документы
snowflakeТаблицы/строки Snowflake как управляемые документы (отличается от наблюдателя R/RW snowflake-audit)
azure_ai_searchДокументы индекса Azure AI Search
postgresСтроки PostgreSQL как управляемые документы — только чтение по построению, объявленная ACL каждой строки, классификация каждого столбца (отличается от наблюдателя R/RW pgaudit; не NL-to-SQL). См. Postgres как источник управляемого контекста.
filesystemСодержимое файлового сервера (локальный / NFS / SMB) — чтение ограничено корнем по построению, owner/group/ACL POSIX отображаются в ACL Document, классификация xattr (отличается от log sink filelog). См. Управление файловым сервером.
// OLIVARES_SOURCES_CONFIG — источники документов живут под "documents", никогда "sources"
{
"documents": [
{ "name": "eng-wiki", "kind": "confluence",
"config": { "export_path": "/var/lib/olivares/confluence" } }
]
}

Коннекторы вывода доставляют находки и уведомления; они ничего не наблюдают и не имеют уровня покрытия. Они подключаются отдельно от источников.

Внутрипроцессные виды назначений: slack, teams, pagerduty, opsgenie, webhook, siem, splunkhec, syslog, servicenow, jira, email, twilio, chronicle, datadog, elastic, snmp, filelog, otlplog (журналы OTLP/HTTP) и s3archive (WORM sink S3 Object Lock — по одному неизменяемому объекту с проверенным lock на уведомление).

Три вида egress через брокер работают вне процесса как встроенные плагины (деревья зависимостей их сетевых протоколов никогда не линкуются с движком, как и у plugin-источников): kafka, amqp и cloudqueue — те же имена kind, что у их source-близнецов; в качестве назначения каждый доставляет уведомление как CloudEvent настроенному брокеру/очереди. Обычная dev-сборка без task build:connectors пропускает такое назначение с честным предупреждением при загрузке, а не притворяется, что оно существует.

Требования к развёртыванию и честная атрибуция

Заголовок раздела «Требования к развёртыванию и честная атрибуция»

Дифференциальные коннекторы R/RW встроены в бинарный файл по умолчанию, но два из них несут требование к развёртыванию, которого нет у остальных — код коннектора агностичен к хосту, а данные, которые он потребляет, — нет:

  • ebpf потребляет экспорт событий ядра Tetragon. Коннектору не нужна никакая возможность ядра — он читает файл/FIFO/stdin с правами 0600, которым владеет Tetragon (events_path, по умолчанию -). Сам Tetragon — это отдельный закалённый DaemonSet, удерживающий минимальные CAP_BPF + CAP_PERFMON, работающий не от root с seccomp/AppArmor и без входящего слушателя. Поэтому развёртывание таково: запустите Tetragon привилегированно (его встроенные TracingPolicies file-access + TCP-connect), затем направьте ebpf на его экспорт. Минимальный Tetragon: v1.0.
  • runtime читает procfs хоста (proc_root, по умолчанию /proc), сокет демона Docker (docker_socket, по умолчанию выключен — доступ на чтение к docker.sock эквивалентен root; включайте намеренно, в идеале через прокси сокета с allowlist на GET) и/или Kubernetes API (по умолчанию внутрикластерный ServiceAccount). Монтируйте только то, что вы включаете.
  • gcp-audit аутентифицируется как служебная учётная запись GCP (JSON-ключ или выданный WIF/ADC access_token) и нуждается только в ролях только для чтения management: roles/resourcemanager.organizationViewer + roles/iam.serviceAccountViewer + roles/logging.viewer — чтение записей Data Access дополнительно требует roles/logging.privateLogViewer. Задайте область organization_id (обход org + org-scoped аудит) и/или projects. Логи аудита Data Access по умолчанию выключены в GCP: включите их согласно конфигурации IAM/data-access, иначе лента активности честно недосчитывается.
  • azure-activity аутентифицируется как служебный принципал Entra (client-credentials) или access_token управляемой идентичности, и нуждается только в роли Reader в корне тенанта (или на подписку) — эта единственная роль покрывает Resource Graph, перечисление подписок и Activity Log. Подписки перечисляются автоматически, когда subscriptions не задан.

Оба по-прежнему работают в процессе (транспорт A); бинарные go-плагины cmd/{pg-audit,s3-cloudtrail,ebpf-source} существуют для развёртывания коллектора вне процесса рядом с хостом, если вы предпочитаете изолировать их там.

Каждый источник opt-in, deny-closed: отсутствующий log_path/path/events_path — это ошибка конфигурации при запуске (источник не подключается), никогда — тихий no-op. Демо-estate (quickstart) засевает эквивалентные синтетические наблюдения через реальную шину, чтобы вы могли увидеть сигнал уровня clean от начала до конца до подключения живого источника.