Перейти к основному содержанию
Guardrails проверяют текст, который проходит через модель. Firewall управляет действиями, которые совершает агент — инструментами, которые он вызывает, MCP-серверами, к которым обращается, навыками, которые загружает, и хостами, с которыми взаимодействует. Это собрат Guardrails на уровне действий: то же ограничение рабочим пространством, та же модель «привяжи один раз», то же обещание «политика живёт в шлюзе, а не в вашем приложении». Эта страница — концептуальный обзор и операционный справочник. Три сопутствующие страницы подробно раскрывают составные части:

Правила

Язык сопоставления — глобы инструментов, клаузы аргументов, списки egress, очистители и последовательности.

MCP-серверы

Регистрируйте и управляйте серверами Model Context Protocol за единым аудируемым шлюзом.

Навыки

Сканируйте и оценивайте по риску возможности, которые ваши агенты устанавливают, прежде чем они смогут запуститься.

1. Что такое Firewall

ИИ-агент не просто генерирует текст — он действует. Он вызывает shell.exec, запрашивает db.query, извлекает URL, загружает community-навык или маршрутизирует вызов инструмента через сторонний MCP-сервер. Каждое из этих действий имеет последствия в реальном мире, и guardrails уровня промпта их не видят. Firewall — это именованная политика в рамках рабочего пространства, которую шлюз вычисляет на каждом вызове инструмента. Вы сохраняете политику один раз, привязываете к ней API-ключ (или назначаете её default’ом рабочего пространства), и с этого момента каждый вызов инструмента, который выпускает этот ключ, проверяется по политике — до того, как он достигнет инструмента. Каждая политика — это упорядоченный список правил. Правило решает одну вещь — к каким вызовам инструментов оно применяется (глоб имени инструмента, опционально ограниченный навыком и поверхностью применения) и что с ними делать (вердикт: allow, audit, deny, sanitize, hold for approval или cap cost). Движок проходит правила в порядке приоритета, побеждает первое совпадение, и откатывается к default-вердикту политики, если ничего не совпало. Редактирование политики вступает в силу на каждом привязанном к ней ключе уже на следующем вызове. Никакого передеплоя. Никаких изменений кода агента. Политика применяется в шлюзе — ваш агент продолжает выпускать вызовы инструментов ровно так же, как раньше.
Детектирование происходит в шлюзе, при первом использовании. Firewall сидит на пути ретрансляции LLM, а не внутри пакетного менеджера или файловой системы вашего агента. Инструмент, MCP-сервер или навык, который агент устанавливает сам, ловится в тот момент, когда его вызов впервые пересекает шлюз, — а не во время установки. Это сделано намеренно: это единственная узловая точка, которая видит каждого провайдера, каждого агента и каждый вызов инструмента независимо от того, как возможность туда попала.

2. Четыре поверхности применения

Каждый вызов инструмента вычисляется ровно по одной поверхности — точке в жизненном цикле запроса, где firewall его видит:
ПоверхностьЧто она видит
inboundИнструменты, которые агент рекламирует модели в запросе (определения инструментов). Позволяет заблокировать опасный инструмент до того, как модель сможет его выбрать.
responsetool_calls, которые модель выдаёт в своём ответе.
mcptools/call, диспетчеризованный через MCP-шлюз Firewall или вычисленный через SDK-хук.
egressИсходящее сетевое назначение (host / IP / CIDR), сообщённое инструментом, — поверхность SSRF и эксфильтрации данных.
Правило без стадии применяется ко всем поверхностям; привяжите правило к одной поверхности, когда вердикт имеет смысл только там (например, egress-allowlist).

3. Основные концепции

КонцепцияОпределение
ПолитикаИменованный набор правил в рамках рабочего пространства. Имеет enabled, is_default, default_verdict и флаг shadow_mode.
ПравилоОдна проверка внутри политики: приоритет, сопоставление инструмента/навыка, опциональная поверхность, опциональный предикат аргумента и вердикт. См. Правила.
ВердиктДействие, которое производит правило (или default) — см. §4.
Default-вердиктПрименяется, когда ни одно правило не совпало. Одно из allow, audit (по умолчанию) или deny.
Shadow-режимПолитика вычисляется и логируется, но никогда не блокирует — каждый применяющий вердикт понижается до audit, а причина получает префикс [shadow] would …. Ваш переключатель безопасного развёртывания.
Observe-режимНастройка уровня рабочего пространства. Когда запрос разрешается в отсутствие политики и observe-режим включён, вызов разрешается, но логируется как пробел в покрытии — именно это наполняет представление Discovered tools.

Область видимости и разрешение

Политики разрешаются ровно как Guardrails и API-ключи — общие в рамках рабочего пространства, когда оно активно. Для любого вызова инструмента шлюз разрешает политику в этом порядке:
  1. Привязка ключа — если у вызывающего ключа есть firewall_policy_id, применяется эта политика (когда она существует и включена).
  2. Default рабочего пространства — иначе применяется включённая политика с is_default рабочего пространства.
  3. Ни то, ни другое — нет применения. При включённом observe-режиме вызов разрешается и логируется как пробел; при выключенном вызов разрешается молча (побайтно идентично рабочему пространству, которое никогда не включало эту функцию).
В рабочем пространстве не более одной политики может быть default’ом; продвижение нового default’а понижает старый в той же транзакции.
Fail-open на неизвестном, fail-closed на неоднозначном. Если разрешение политики упирается в переходную ошибку, шлюз деградирует до observe/allow, а не кладёт трафик. Но там, где неприменение свело бы на нет правило — egress-отчёт без пригодного назначения, недостижимое хранилище подтверждений, навык, чьё владение не удаётся разрешить, — движок fail closed (deny или hold). Доступность сохраняется; безопасность не пропускается молча в случаях, которые важны.

4. Вердикты

Правило (или default-вердикт) производит один из:
ВердиктЧто делает
allowПропустить вызов. Логируется.
auditРазрешить, но записать для разбора. Дефолтный default_verdict — наблюдать всё, не блокировать ничего, пока вы не готовы.
denyЗаблокировать вызов. Агент видит ошибку инструмента (или HTTP 400 на поверхности inbound).
sanitizeОтредактировать совпавшие подстроки из аргументов инструмента (секреты, PII) и переслать очищенный вызов. См. очистители. На поверхности inbound, где ещё нет аргументов времени вызова, sanitize эскалирует до блокировки.
pending_approvalУдержать вызов для человека. Агент получает ответ «held»; ревьюер одобряет или отклоняет вне основного канала; агент повторно отправляет с одноразовым токеном подтверждения. См. §7.
cap_costОтклонить, как только накопленные траты прогона агента превысят пороговый лимит правила в центах. Предохранитель для зацикленных прогонов.
В shadow-режиме deny / sanitize / pending_approval все понижаются до audit, так что вы можете измерить влияние политики до того, как она изменит трафик.

5. Как вычисляется вызов инструмента

  1. Вызов инструмента достигает шлюза (рекламируется на inbound, выдаётся в ответе, диспетчеризуется через MCP-шлюз или сообщается как egress).
  2. Движок разрешает активную политику (§3).
  3. Он проходит правила политики в порядке приоритета (сначала меньший приоритет; ничьи разрешаются по id правила). Правило совпадает, когда его поверхность, глоб имени инструмента, опциональный глоб имени навыка, опциональные клаузы аргументов и опциональная область egress все совпадают.
  4. Побеждает первое совпадение → применяется вердикт правила. Если ни одно правило не совпало → default_verdict политики.
  5. Если вызов принадлежит управляемому навыку, режим применения навыка накладывается сверху — навык в режиме block принудительно даёт deny; навык в режиме quarantine эскалирует всё, что меньше deny, до pending_approval.
  6. Решение логируется как событие firewall (если это не dry run), коррелированное с прогоном и сессией агента.

6. Как выглядит блокировка

Отклонённый вызов на поверхности inbound возвращает HTTP 400 с телом ошибки в форме OpenAI, кодом ошибки firewall_blocked и сообщением, называющим инструмент и причину — например, tool "shell.exec" blocked by firewall: destructive shell command. Ошибка несёт структурированные metadata (код причины, факторы риска, оценку) и помечается skip-retry (повторный прогон того же вызова просто снова заблокируется). Вызов, диспетчеризованный через MCP-шлюз, блокируется как ошибка инструмента (firewall deny: <reason>), а не как сбой транспорта, так что модель видит отказ и может среагировать — выбрать другой инструмент, спросить пользователя или остановиться — вместо падения. Удержанный вызов (pending_approval) возвращает HTTP 400 с кодом firewall_approval_pending и id подтверждения, который клиент опрашивает.

7. Подтверждение человеком (HITL)

Вердикт pending_approval превращает вызов инструмента в разбор вне основного канала:
  1. Движок ставит запись подтверждения в очередь и возвращает ответ «held», несущий её id; вызов не достигает инструмента.
  2. Ревьюер разрешает его — из консоли (Developer+) или через подписанный HMAC вебхук-колбэк к вашей собственной системе подтверждений.
  3. Ваш агент (или MCP SDK) опрашивает id подтверждения; после одобрения он повторно отправляет исходный вызов с одноразовым заголовком X-OrcaRouter-Firewall-Approval, и шлюз пропускает его этот один раз.
Решения по принципу first-writer-wins и идемпотентны. Если лежащее в основе правило было отредактировано после удержания, обогащение помечает rule_changed, чтобы ревьюеры знали, что контекст сместился.

8. Уровни автономии — один переключатель для всей вашей политики

Тонкая настройка политик правило за правилом — точный путь; уровни автономии — быстрый. Один элемент управления атомарно заменяет позицию Firewall и Guardrails вашего рабочего пространства в одной транзакции, с отменой в один клик:
УровеньПозиция
tightБлокировать деструктивный shell, секреты в аргументах и SSRF-egress (default deny); guardrails PII Shield + Secrets Blocker включены; observe-режим выключен.
balancedАудировать деструктивный shell, флагировать PII; observe-режим выключен. Рекомендуемая стартовая позиция.
permissiveНет применяющей политики, нет guardrails; observe-режим включён, так что вы всё равно видите всё.
Отмена восстанавливает точное предыдущее состояние из снимка аудита.

9. Детектирование аномалий

Помимо статических правил, Firewall обучается нормальной форме использования инструментов каждого рабочего пространства и флагирует отклонения в читаемой ленте:
  • Всплески частоты / стоимости — активность по каждому инструменту оценивается относительно обученного базиса по часу недели (14-дневное скользящее среднее), так что «100 вызовов db.query в 3 часа ночи в воскресенье» выделяется, даже если каждый вызов сам по себе разрешён.
  • retry_loop — агент, долбящий один и тот же сбойный инструмент.
  • novel_path — переход от инструмента к инструменту, которого это рабочее пространство никогда раньше не делало.
Лента сообщает только имена инструментов, отредактированные id токенов и счётчики. Вы можете отложить (snooze) аномалию на срок до 7 дней, пока расследуете.

10. Наблюдаемость

Firewall оставляет след, по которому можно действовать, весь в рамках рабочего пространства:
ПоверхностьЧто она вам даёт
EventsКаждое вычисление, фильтруемое по вердикту, поверхности, инструменту, прогону и сессии. Сырая запись, стоящая за всем остальным.
Runs & sessionsСобытия, свёрнутые по прогону или диалогу агента — разбивка по вердиктам, различимые инструменты и модели, первое/последнее появление. Представление «что этот агент на самом деле сделал».
Discovered toolsКаждый инструмент, который видело рабочее пространство, помеченный covered (применяется правило) или gap (ничего не применяется). Управляет написанием политики из реального трафика.
SimulateПредпросмотр того, что изменил бы уровень автономии, до его применения.
TestDry-run политики по образцу вызова инструмента с выводом вердикта, совпавшего правила и причины — ничего не сохраняется, ничего не диспетчеризуется.
AuditКаждое изменение политики, правила и настроек пишет строку аудита (рабочее пространство + центральная) после коммита изменения. Секреты и блобы правил никогда не логируются.

11. Отношение к остальной части шлюза

ПоверхностьКак сочетается с Firewall?
GuardrailsВзаимодополняющие плоскости. Guardrails проверяют текст промпта/ответа; Firewall управляет действиями инструментов. Оба могут применяться к одному запросу. Уровни автономии задают оба сразу.
RoutingНезависимы. Маршрутизация выбирает модель/канал; firewall судит вызовы инструментов независимо от того, какая модель их обслужила.
API-ключиКлюч привязывается к политике через firewall_policy_id; привязка живёт на ключе в шлюзе. Отсутствие привязки откатывается к default’у рабочего пространства.
MCP-шлюзFirewall и есть MCP-шлюз — каждый зарегистрированный вами сервер диспетчеризует свой tools/call через движок.
НавыкиРежим применения управляемого навыка накладывается поверх вердикта правила, так что карантинный навык удерживается, даже если ни одно правило не называет его инструменты.

12. Подключение агента к шлюзу Firewall

Есть два способа, которыми вызов инструмента достигает движка:
  • MCP-шлюз — направьте ваш MCP-клиент (Claude Desktop, Cursor, агентский фреймворк) на https://api.orcarouter.ai/api/v1/firewall/mcp. Шлюз выставляет инструменты каждого достижимого зарегистрированного сервера в пространстве имён <server>.<tool> и вычисляет каждый tools/call inline. См. MCP-серверы.
  • Хук evaluate — вызывайте POST /api/v1/firewall/evaluate из собственного цикла агента перед диспетчем вызова инструмента и действуйте по вердикту.
Оба требуют токена с областью firewall-gateway — выделенного API-ключа, выпущенного для этой цели. Обычный ключ получает 403 на этих маршрутах.

13. API-справочник

Все консольные маршруты ограничены рабочим пространством через контекст рабочего пространства и применяют RBAC последовательно: чтения и песочницы test/simulate открыты каждому участнику; записи требуют Developer+.

Политики и настройки

Метод и путьРольНазначение
GET /api/workspace/firewall/settingsMemberПрочитать настройки firewall рабочего пространства (observe-режим, дефолты).
PUT /api/workspace/firewall/settingsDeveloper+Обновить настройки.
GET /api/workspace/firewall/policiesMemberСписок политик (со счётчиками правил + привязанных ключей).
GET /api/workspace/firewall/policies/:idMemberДетали одной политики.
POST /api/workspace/firewall/policiesDeveloper+Создать политику.
PUT /api/workspace/firewall/policiesDeveloper+Обновить политику.
DELETE /api/workspace/firewall/policies/:idDeveloper+Удалить политику (409, если ключи всё ещё привязаны).

Позиция, пресеты и песочницы

Метод и путьРольНазначение
GET /api/workspace/firewall/presetsMemberВстроенные пресеты правил.
POST /api/workspace/firewall/autonomyDeveloper+Применить уровень автономии.
POST /api/workspace/firewall/autonomy/undo/:audit_idDeveloper+Отменить изменение автономии.
GET /api/workspace/firewall/simulateMemberПредпросмотр уровня автономии (?level=).
POST /api/workspace/firewall/testDeveloper+Dry-run политики по образцу вызова инструмента.

Наблюдаемость

Метод и путьРольНазначение
GET /api/workspace/firewall/discovered-toolsMemberУвиденные инструменты, помеченные covered / gap.
GET /api/workspace/firewall/eventsDeveloper+Список событий firewall (фильтруемый).
GET /api/workspace/firewall/events/by-request/:request_idDeveloper+События для одного запроса.
GET /api/workspace/firewall/events/aggregateDeveloper+Свёртка по прогонам / сессиям.
GET /api/workspace/firewall/trace/by-runDeveloper+Узлы трассировки для прогона (?run_id=).
GET /api/workspace/firewall/anomaliesMemberЛента аномалий (?window=).
POST /api/workspace/firewall/anomalies/snoozeDeveloper+Отложить ленту аномалий.
Правила, MCP-серверы и навыки имеют каждый собственные эндпоинты — см. Правила, MCP-серверы и Навыки.

Шлюз (machine-to-machine)

Эти работают на токене с областью firewall-gateway, а не на консольной сессии:
Метод и путьНазначение
POST /api/v1/firewall/evaluatePre-dispatch вердикт для одного вызова инструмента.
POST /api/v1/firewall/evaluate_planPre-execution проверка многошагового плана.
ANY /api/v1/firewall/mcpЕдиный эндпоинт MCP-шлюза.
GET /api/v1/firewall/approvals/:idОпросить состояние подтверждения удержанного вызова.
POST /api/v1/firewall/approvals/:id/callbackПодписанный HMAC колбэк подтверждения.

14. FAQ

При выключенном observe-режиме поведение побайтно идентично рабочему пространству, которое никогда не включало эту функцию — ничего не блокируется и не логируется. При включённом observe-режиме вызов разрешается, но записывается как пробел в покрытии, так что он появляется в Discovered tools.
Включите shadow-режим. Политика вычисляется и логируется ровно так, как делала бы в production, но каждый применяющий вердикт понижается до audit, а причина получает префикс [shadow] would …. Наблюдайте представления events и runs, убедитесь, что она срабатывает на том, на чём вы ожидаете, и ни на чём, на чём не ожидаете, затем выключите shadow-режим, чтобы начать применять.
Блокировка на inbound срабатывает до вызова вышестоящей модели, так что она не стоит токенов модели. Вердикты audit / allow не меняют тарификацию. Правило cap_cost само по себе является контролем биллинга — оно отклоняет, как только траты прогона пересекают ваш лимит в центах.
Оба, для разных слоёв. Guardrails проверяют текст в промптах и ответах (PII, секреты, jailbreak). Firewall управляет действиями, которые совершает агент (какие инструменты, какие MCP-серверы, какие хосты). Запрос может пройти через оба. Уровень автономии tight настраивает их вместе.
Firewall применяется к вызовам инструментов, которые пересекают шлюз — путь ретрансляции, MCP-шлюз и хук evaluate. Инструмент, который ваш агент выполняет целиком внутри собственного процесса, никогда не касаясь шлюза, находится вне поля зрения firewall. Цель дизайна — сделать шлюз единственным аудируемым путём для вызовов, которые важны (инструменты, опосредованные моделью, диспетч MCP, сетевой egress); маршрутизируйте их через него, и они управляемы.

Смотрите также

Хотите глубже разобраться в безопасности агентов? Руководства «Защитите агентов — Zero Trust» встраивают эту функцию в рабочий процесс нулевого доверия.

Защитите агентов (Zero Trust)

Плейбук firewall для агентов с нулевым доверием — allow-листы инструментов, проверки аргументов и контроль исходящего трафика.

Базовый уровень Secure Agents

Один переключатель, который одновременно задаёт позицию вашего Firewall и Guardrails.