1. Схема правил firewall с одного взгляда
Каждое правило несёт те же поля. Толькоverdict всегда обязателен — всё
остальное сужает то, что правило совпадает, или настраивает выбранный
вердикт, и отсутствующий сопоставитель вакуумно истинен.
| Поле | Назначение |
|---|---|
priority | Порядок вычисления — меньшее выполняется первым. |
verdict | Действие, когда правило совпадает (обязательно). |
stage | Поверхность, к которой ограничить; пусто = все. |
tool_name_glob | Глоб на имени инструмента. |
args_match_json | JSONPath предикат аргумента, как JSON-кодированная строка. |
egress_json | Список host / CIDR allow-deny (egress-правила), как JSON-кодированная строка. |
sanitize_json | Конфиг редактирования (когда verdict = sanitize), как JSON-кодированная строка. |
cap_cost_cents | Потолок стоимости прогона в центах USD (когда verdict = cap_cost). |
sequence_json | Предикат упорядоченной многошаговой цепочки (правила последовательностей), как JSON-кодированная строка. |
label / notes | Человеческое имя и обоснование — показываются в событиях, игнорируются движком. |
default_verdict политики.
2. priority — порядок вычисления
Целочисленный ординал. Меньшее выполняется первым; два правила с одним
приоритетом разрешают ничью по id правила (порядок вставки). Ставьте свои
конкретные вырезки выше широких catch-all — allow для одного доверенного
инструмента на приоритете 10 бьёт deny * на приоритете 100.
3. verdict — действие
Единственное обязательное поле. Когда правило совпадает, его вердикт решает, что
происходит с вызовом:
| Вердикт | Эффект |
|---|---|
allow | Пропустить вызов, с логированием. |
audit | Разрешить и записать для разбора — обычный default_verdict. |
deny | Заблокировать вызов. |
sanitize | Отредактировать совпавшие подстроки из аргументов инструмента, затем переслать. |
pending_approval | Удержать вызов для человека-ревьюера. |
cap_cost | Отклонить, как только накопленные траты прогона агента пересекут потолок. |
deny возвращает HTTP 400 firewall_blocked на поверхности inbound или
ошибку инструмента на поверхности mcp. Удержанный вызов возвращает HTTP
400 firewall_approval_pending с id, который опрашивает агент. В
shadow-режиме каждый применяющий вердикт
понижается до audit, а причина получает префикс [shadow] would …. См.
Вердикты о полной таблице и формах блокировки.
4. stage — поверхность применения
Привязывает правило к одной из поверхностей firewall. Оставьте пустым, и правило
применяется ко всем поверхностям:
inbound — рекламируемые определения инструментов
inbound — рекламируемые определения инструментов
Инструменты, которые агент рекламирует модели в запросе. Заблокируйте
опасный инструмент до того, как модель сможет его выбрать.
response — выданные моделью tool_calls
response — выданные моделью tool_calls
tool_calls, которые модель выдаёт в своём ответе.mcp — диспетч tools/call
mcp — диспетч tools/call
tools/call, маршрутизированный через
MCP-шлюз Firewall.egress — исходящее назначение
egress — исходящее назначение
Исходящий host / IP / CIDR, которого достигает инструмент — поверхность
SSRF и эксфильтрации данных.
Некоторые сочетания вердикт + стадия отклоняются при сохранении, потому что
вердикт не может там сработать:
cap_cost — это pre-dispatch потолок стоимости
прогона, инертный на response и egress; pending_approval всегда
удерживает только на inbound, так что явная привязка response/egress
отклоняется. Редактор скрывает эти комбинации; API их отклоняет. См.
Стадии.5. tool_name_glob — какой инструмент
Маленький, чувствительный к регистру глоб на имени инструмента — shell.* для
целого семейства, *.delete для глагола по серверам, http_fetch для одного
точного инструмента. Пустой или * совпадает с каждым инструментом. Опциональный
глоб имени навыка (та же грамматика) объединяет по AND второе условие на
владеющем навыке, так что вы можете доверять инструменту из встроенного навыка
и ограничить его от community-навыка.
Полная грамматика — префикс, суффикс, инфикс, точный и края, на которых люди
спотыкаются — это собственный справочник:
Синтаксис глоб-шаблонов.
6. args_match_json — с какими аргументами
Глоб отвечает, какой инструмент; args_match_json отвечает, с какими
аргументами — разница между «заблокировать shell.exec» и «заблокировать
shell.exec только когда команда — rm -rf». Его значение — это
JSON-кодированная строка, несущая набор JSONPath-клауз, все объединены по
AND. Декодированный объект клауз выглядит так:
"args_match_json": "{\"clauses\":[{\"path\":\"$.command\",\"op\":\"regex\",\"value\":\"rm -rf\"}]}".
Операторы — eq, contains, regex, in, cidr_match, gt и lt.
Отсутствующий args_match_json вакуумно истинен — правило совпадает по глобу в
одиночку. Полный язык предикатов, синтаксис пути и поведение fail-closed
сломанной клаузы — в
Проверке аргументов и
кулинарной книге аргументов.
7. egress_json — какие назначения
Используется на поверхности egress: JSON-кодированная строка, содержащая
список allow-and-deny по host / CIDR, сопоставляемый с исходящим назначением,
которого достигает инструмент. Декодированный объект выглядит так:
deny
определяет, что блокируется, а allow вырезает из него исключения.
Шаблон firewall Baseline поставляет egress deny-правило с готовым SSRF /
cloud-metadata denylist (metadata IP
169.254.169.254, диапазоны RFC-1918,
loopback, link-local и metadata.google.internal), так что вам не нужно
создавать их вручную. Добавьте свои собственные назначения сверху для всего
прочего, что хотите ограничить. См.
Контроль egress о полном рецепте и
Эксфильтрацию данных о том, почему
это важно.8. sanitize_json — отредактировать аргументы
Используется, когда verdict = sanitize: JSON-кодированная строка,
называющая, какие пресеты / кастомные regex’ы редактируют совпавшие подстроки
из аргументов инструмента до того, как очищенный вызов пересылается —
полезно для удаления секрета или значения PII, которое агент уронил в аргумент,
без блокировки всего действия. Декодированный объект выглядит так:
9. cap_cost_cents — потолок трат
Используется, когда verdict = cap_cost: per-rule потолок стоимости прогона,
целое число в центах USD. Когда правило совпадает, вызов отклоняется, как
только накопленные траты прогона агента пересекут потолок — предохранитель для
убегающего цикла, разрешающийся в allow или deny в событиях. Потолок должен
быть явным и неотрицательным, и правило нельзя привязать к response или
egress (где вердикт инертен). Полное поведение в
Cap cost.
10. Одно полное правило
Собираем поля вместе — отклонитьshell.exec, но только когда команда выглядит
деструктивной, ограничено выданными моделью вызовами инструментов:
shell.exec,
единственная клауза сужает до деструктивной команды, а вердикт отклоняет. Любой
shell.exec, чья команда не совпадает с regex, проваливается к следующему
правилу или default политики. Привяжите ключ к политике (firewall_policy_id на
ключе), и она живая на следующем вызове — без передеплоя.
11. Как поля объединяются
Каков минимум, который нужен валидному правилу?
Каков минимум, который нужен валидному правилу?
verdict. Всё остальное опционально: пустой stage совпадает со всеми
поверхностями, пустой tool_name_glob (или *) совпадает с каждым
инструментом, а отсутствующий args_match_json совпадает с любыми
аргументами. Голый { "verdict": "audit" } — валидный catch-all.Сопоставители AND или OR?
Сопоставители AND или OR?
Они AND. Правило срабатывает, только когда его стадия, глоб инструмента,
глоб навыка, клаузы аргументов и область egress все держатся. Чтобы
выразить OR, напишите отдельные правила.
Какие поля сочетаются с каким вердиктом?
Какие поля сочетаются с каким вердиктом?
sanitize_json читается только для вердикта sanitize; cap_cost_cents
только для cap_cost; egress_json только на поверхности egress. Консоль
валидирует эти сочетания при сохранении, так что правило, которое отображает
одно поведение, но никогда не может его применить, не может быть сохранено.Что если два правила оба совпадают?
Что если два правила оба совпадают?
Побеждает меньший
priority (ничьи разрешаются по id правила) — побеждает
первое совпадение, и вычисление там останавливается. См.
Приоритет правил.Связанное
Создать политику
Создайте свою первую политику и привяжите ключ.
Синтаксис глобов
Полная грамматика глоба имени инструмента.
Вердикты
Каждый вердикт и как выглядит блокировка.
Проверять аргументы
JSONPath-клаузы аргументов в глубину.
Управление политиками
Редактируйте, версионируйте и откатывайте политики.
Правила Firewall
Полный справочник движка сопоставления.
