Суть
Модель вероятностна и поддаётся семантическим манипуляциям: достаточно убедительной формулировки во входных данных, чтобы она сочла запрещённое действие уместным. Граф связей — сущности, транзакции, политики и рёбра между ними — таким свойством не обладает. Он либо содержит разрешающее ребро, либо нет.
Вето ставится после генерации и до исполнения: агент уже решил, что делать, аргументы уже собраны, и в этот момент их сверяют с графом.
Зачем это нужно
Все защиты, живущие в текстовом слое, разделяют общую слабость: они сделаны из того же материала, что и атака. Промпт можно перебить промптом, классификатор обучен на статичном наборе, иерархия привилегий — предпочтение, а не гарантия (см. Instruction Hierarchy).
Граф выпадает из этой логики. Он не рассуждает и не поддаётся уговорам, поэтому проверка по нему даёт то, чего текстовые рубежи дать не могут: отказ, не зависящий от убедительности входных данных.
Цена — граф нужно построить и поддерживать, и он покрывает только то, что в нём описано. Это рубеж для критичных действий, а не универсальный фильтр.
Как работает
- Перепроверка по графу. Сгенерированные аргументы сопоставляются с независимым графом инфраструктуры: узлы вида «роль пользователя», «ресурс», «транзакция», «политика соответствия».
- Анализ рёбер. Проверяется, разрешён ли переход между конкретными узлами — например, может ли эта роль инициировать этот тип внешнего вызова с этим ресурсом.
- Жёсткое вето. При запрещённом ребре операция прерывается немедленно. Согласие модели, её обоснование и уверенность в расчёт не принимаются.
Существенно, что граф независим от модели: он строится из реальной топологии прав и политик, а не из того, что модель о ней думает.
Чтобы граф не разошёлся с реальностью
Граф связей, который поддерживают руками, гарантированно устареет — и хуже того, устареет молча: вето продолжит срабатывать, опираясь на несуществующие рёбра, и начнёт пропускать то, что должно блокировать. Поэтому граф не ведут, а выводят из источника истины: инвентаризации инфраструктуры, IAM-политик, схемы БД, реестра сервисов. Ручные правки допустимы только как временное исключение с датой истечения.
Из этого следуют две обязательные вещи. Первая — пересборка по расписанию, привязанная к темпу изменений в источнике, а не к календарю. Вторая — алерт на расхождение: сверка выведенного графа с предыдущей версией, где резкое изменение числа рёбер означает либо реальную перестройку прав, либо поломку выгрузки, и различить это должен человек.
Отдельный признак, что граф пора перестраивать иначе: если для ответа на вопрос «имеет ли этот агент право на это действие» приходится дописывать рёбра вручную, значит модель прав в графе не совпадает с моделью прав в системе — и вето проверяет не то, что нужно.
Место в эшелоне защиты
Вето закрывает то, что не закрывают предыдущие слои: Instruction Hierarchy работает внутри модели и обходится, Guardrails фильтруют текст и промахиваются на адаптивных атаках, allowlist инструментов разрешает сам вызов, но не проверяет его аргументы в контексте.
Вето проверяет именно связку «кто — что — над чем» и потому ловит случай, когда разрешённый инструмент вызывается с аргументами, которые в этой комбинации недопустимы — типовой финал успешного Tool Hijacking.
Внешнее подтверждение: проверка моделью дополняет вето, но не заменяет его
Сверка с OWASP AISVS C9.2 даёт этой заметке формулировку, которую стоит цитировать целиком: проверка планируемого рискованного действия моделью допустима и полезна, но она добавляется к детерминированным воротам политики и не подменяет их.
Второе требование объясняет, почему именно так: такая проверка сама обязана быть защищена от манипуляции недоброжелательным вводом и не должна поддаваться обходу через инъекцию. То есть проверяющая модель — это ещё одна поверхность атаки, а не независимый арбитр (Prompt Injection).
Отсюда порядок в эшелоне, который здесь описан: детерминированное вето стоит последним, после любых модельных проверок, и именно оно принимает решение. Модельная проверка расположена раньше и работает фильтром, снижающим нагрузку, а не барьером.
Связано с
- Instruction Hierarchy — внутримодельный слой, который вето страхует снаружи
- Guardrails — текстовые рубежи на входе и выходе
- Tool Hijacking — атака, при которой вызывается разрешённый инструмент с чужими аргументами
- Agent Governance — права и политики, из которых строится граф
- Human in the Loop — альтернатива вето там, где решение нельзя формализовать графом