fetch, web_search, отправщик webhook. Имя инструмента может быть
в вашем списке разрешённых, аргументы могут выглядеть чисто, а вызов всё
равно заканчивается отправкой ваших данных на хост, контролируемый
злоумышленником, или вытягиванием учётных данных с эндпоинта метаданных
169.254.169.254. Назначение — это та часть вызова, которую ваши правила по
имени инструмента никогда не видят.
mcp egress control закрывает этот пробел. Egress-правило ограничивает
вердикт firewall тем, куда обращается инструмент — хостом, IP или
диапазоном CIDR — так что тот же http_fetch, которому разрешено
api.openai.com, запрещён ко всему остальному. Оно работает на поверхности
egress firewall, поверх оценки на каждый вызов,
через которую уже проходит каждый tools/call.
Это консольная задача. Правила firewall живут на маршрутах
/api/workspace/firewall/*, которые аутентифицируются вашей сессией /
access-токеном — не relay-ключом sk-orca-…. Написание правила требует роли
Developer+.1. Что контролирует egress-правило
Обычное правило совпадает по имени инструмента и его аргументам. Egress-правило добавляет третье измерение: назначение, в которое разрешается вызов. Вы устанавливаетеstage правила в egress и
прикрепляете список разрешений / запретов egress_json. Движок извлекает
хост назначения из вызова и срабатывает правилом только когда этот хост в
области.
Записи сопоставляются тремя способами:
Имя хоста
Точное совпадение без учёта регистра, например
api.openai.com.
Завершающая точка обрезается с обеих сторон.IP-литерал
Точное совпадение с разрешённым IP набора, например
169.254.169.254.Диапазон CIDR
IP назначения — литеральный или разрешённый через DNS — должен попадать
внутрь блока, например
10.0.0.0/8.2. Один конкретный пример
Запретите каждому инструменту в форме fetch обращаться к эндпоинту облачных метаданных и диапазонам RFC-1918. Это канонический разрез ноги эксфильтрации SSRF: вердиктdeny на стадии egress, ограниченный списком запретов
egress_json.
tools/call, чьё назначение разрешается в любой из этих диапазонов,
возвращается модели как ошибка инструмента; вызов к публичному хосту,
который не покрыт списком запретов, проходит насквозь.
3. Разрешить списком только одно назначение
Обратное предыдущему примеру: прикрепите fetch-инструмент к одному санкционированному хосту и дайтеdefault_verdict политики (или
последующему catch-all) разобраться с остальным. Поскольку это вердикт
allow, список allow — это набор в области.
4. Как это компонуется с остальным firewall
Egress-правило — это одно правило среди многих в политике firewall рабочего пространства. Движок проходит правила в порядке приоритета (наименьший первым), и выигрывает первое совпадение, так что ставьте узкий egress deny выше любого широкого allow.| Вердикт на egress-правиле | Эффект |
|---|---|
deny | Блокирует вызов к назначениям в области — записывается на поверхности egress и возвращается инструменту как ошибка. |
audit | Логирует совпавший вызов как событие firewall; всё равно диспетчит. |
allow | Разрешает назначения в области; сочетается с полом default-deny. |
pending_approval и cap_cost не применяются на поверхности egress —
egress — это проверка назначения, а не удержание или лимит расходов.
Используйте эти вердикты на поверхностях mcp или inbound. См.
справочник вердиктов.Встроенная SSRF-защита (правило не требуется)
Встроенная SSRF-защита (правило не требуется)
Независимо от любого написанного вами правила,
MCP-шлюз валидирует каждый эндпоинт сервера
и его разрешённый IP набора против SSRF-политики — интранет-диапазоны и
адрес облачных метаданных отвергаются, а IP перепроверяется на каждом
хопе, чтобы победить DNS rebinding. Ваше egress-правило наслаивает
специфичную для рабочего пространства политику назначений поверх этой
базовой линии.
Правила последовательности для цепочки эксфильтрации
Правила последовательности для цепочки эксфильтрации
Единичный egress deny останавливает обращение инструмента к хосту.
Правило последовательности
останавливает цепочку — например, «прочитать файл, затем egress в
пределах окна» — помечая ногу egress только когда она следует за
чувствительным чтением. Это разрыватель смертельной трифекты;
ограничение egress — это контроль на каждый вызов.
5. Сначала shadow, затем применяйте
Выкатка egress deny напрямую в применение на загруженном рабочем пространстве рискует сломать легитимную интеграцию, о которой вы забыли. Две страховочные сети:- Shadow-режим. Политика в shadow-режиме понижает каждый принуждающий
вердикт до audit — ваш egress deny логирует
[shadow] would deny …вместо блокировки, так что вы видите радиус поражения, прежде чем он начнёт кусаться. - Режим observe. Настройка рабочего пространства
firewall_observe_modeлогирует непокрытые вызовы как Обнаруженные инструменты, показывая реальные назначения, к которым ваши агенты уже обращаются, чтобы вы могли написать точный список разрешённых на основе данных, а не догадок.
6. Роли и маршруты
Все консольные маршруты ограничены рабочим пространством и аутентифицируются вашей сессией / access-токеном. Чтение открыто любому Member; написание или редактирование правила требует Developer+.| Метод и путь | Роль | Назначение |
|---|---|---|
GET /api/workspace/firewall/policies/:id | Member | Прочитать политику и её правила. |
POST /api/workspace/firewall/rules | Developer+ | Добавить правило (установить stage: egress). |
PUT /api/workspace/firewall/rules | Developer+ | Обновить правило (id в теле). |
DELETE /api/workspace/firewall/rules/:id | Developer+ | Удалить правило. |
POST /api/workspace/firewall/test | Developer+ | Воспроизвести образец вызова против черновой политики. |
Связанное
Справочник правил Firewall
Полный DSL правил — глобы инструментов, сопоставление аргументов, списки
egress, последовательности.
Подключить MCP-сервер
Зарегистрируйте сервер, чтобы вызовы его инструментов выполнялись за
firewall.
Список разрешённых MCP-инструментов
Default-deny для инструментов, которые вы явно не одобрили.
Эксфильтрация данных
Угроза, для остановки которой построен контроль egress.
