http_fetch, web_search или любой инструмент,
открывающий исходящее подключение, назначение — это часть, которой вам нужнее
всего управлять. Запутанный или захваченный агент, способный достичь
169.254.169.254, читает ваши облачные учётные данные; способный POST’ить на
хост злоумышленника — эксфильтрирует ваши данные. Контроль egress агентов
управляет этим назначением — вы создаёте правило allow/deny по host/CIDR на
поверхности egress firewall, привязываете его к ключу, и шлюз проверяет
каждое исходящее назначение, которое сообщает инструмент агента, до того как
вызов выйдет.
Это сфокусированная страница use-case. О полной грамматике правил и семантике
вердиктов см. Схему правил и
Вердикты; о том, как egress сидит среди
других точек применения, см. Стадии.
1. Контроль egress агентов на поверхности egress
Из четырёх поверхностей firewallegress —
та, что видит исходящее сетевое назначение, которое сообщает инструмент, —
host, IP-литерал или CIDR. Правило, привязанное к stage: egress, совпадает с
этим назначением, а не с именем инструмента или его аргументами, что делает
его контролем SSRF и эксфильтрации данных: оно отвечает, куда может достичь
этот агент, независимо от того, какой инструмент достигал.
Egress — это ограничение назначения, не блокировка инструмента. Чтобы
инструмент вообще не существовал, отклоните его по имени на поверхности
inbound (Блокировка инструментов).
Контроль egress предполагает, что инструмент может законно извлекать — он
просто ограничивает, куда.
2. Один пример: отклонить SSRF-назначения
Каноническое egress-правило отклоняет endpoint cloud metadata и приватные диапазоны RFC-1918 — назначения, которых инструмент в форме извлечения никогда не должен достигать. В консоли рабочего пространства откройте политику и добавьте правило сstage
egress, вердиктом deny и egress-списком:
egress_json — это JSON-кодированная строка, несущая списки host/CIDR —
декодированная, это {"deny": [...], "allow": [...]}. Каждая запись совпадает
как CIDR, IP-литерал или нечувствительное к регистру имя хоста.
Для вердикта deny список deny — это набор в области (назначения, которые
правило блокирует), а список allow вырезает из него исключения — так что
правило выше блокирует четыре диапазона, но пропускает api.openai.com, даже
если он когда-либо разрешился бы в один из них. Когда назначение — имя хоста, а
не литеральный IP, и ваш список несёт записи IP/CIDR, имя разрешается по
принципу best-effort и его адреса перепроверяются, так что metadata.internal
всё равно совпадает с deny 169.254.0.0/16, даже если оно не указано по имени.
3. Вы создаёте CIDR-правила — ни один пресет их не поставляет
То, что уровень автономииtight и его
пресет block_ssrf_egress действительно поставляют, — это набор deny на
именах инструментов в форме извлечения — http_fetch, web_search,
fetch_url, request, плюс их MCP-варианты <server>.<tool>. Это тупая
позиция: она отказывает в инструментах в форме egress напрямую, а не
ограничивает, куда они могут достичь. Тянитесь за ней, когда агенту вообще
нечего делать с сетевыми вызовами; тянитесь за правилом назначения (§2), когда
он действительно извлекает, но только из одобренного набора хостов.
| Подход | Что он ограничивает | Автор |
|---|---|---|
SSRF-пресет tight | Имена инструментов в форме извлечения (отклоняет их) | Встроенный |
| Egress CIDR/host правило | Назначение, которого может достичь извлечение | Вы |
4. Как выглядит заблокированный egress
Когда назначение совпадает с применяющим egress-правилом, вызов отклоняется до того, как покинет шлюз, и вычисление записывается как событие firewall с поверхностьюegress и вердиктом deny. В
shadow-режиме deny понижается до audit с
причиной с префиксом [shadow] would …, так что вы можете точно измерить,
какие назначения правило заблокировало бы против реального трафика, до того
как примените его.
Некорректный или пустой egress-список трактуется консервативно: применяющее
правило
deny всё равно ограничивает (опечатка не может молча остановить его
блокировку), но правило allow со сломанным списком не сработает — иначе
неправильно набранный allow-list стал бы allow-all и затенил бы default deny.
Новые правила валидируются при сохранении (список должен объявить хотя бы одну
запись allow или deny), так что это лишь защищает legacy-строки.5. Создавайте из реального трафика, затем разворачивайте
Увидьте назначения, которых вы реально достигаете
Увидьте назначения, которых вы реально достигаете
Журнал событий записывает хост
назначения на каждом событии поверхности
egress
(egress_host/egress_url), так что отфильтруйте его по поверхности
egress и создавайте свой deny-список по назначениям, которые реально
появились, а не угадывая. Вкладка Discovered Tools — это свёртка по
именам инструментов (имена инструментов и поверхности, на которых они
срабатывали) — она говорит вам, какие инструменты в форме извлечения
выполнялись, а не хосты, которых они достигли. См.
Аналитику.Прогон вердикта вхолостую, прежде чем полагаться на него
Прогон вердикта вхолостую, прежде чем полагаться на него
Вкладка Test в консоли прогоняет политику вхолостую против образца
tool_name + поверхность (+ опциональные аргументы) и возвращает вердикт,
совпавшее правило и причину — ничего не диспетчеризуется. Она
подтверждает, к какому правилу разрешается вызов; чтобы подтвердить вашу
CIDR/host-математику против реальных назначений, используйте shadow-режим
ниже (полезная нагрузка Test не несёт назначение, так что сопоставление
egress-списка отрабатывается на живом egress-трафике). См.
Тестирование правил.Измеряйте вживую с shadow-режимом
Измеряйте вживую с shadow-режимом
Включите shadow-режим, и egress-deny
логируется так, как сработал бы, без блокировки. Наблюдайте за
журналом событий, отфильтрованным по
поверхности
egress, подтвердите, что он ловит назначения, которые вы
ожидаете, затем выключите shadow.6. Привяжите политику и кто может её редактировать
Политика ничего не делает, пока к ней не разрешится ключ. Привяжите в консоли, установивfirewall_policy_id на ключе,
или сделайте политику default рабочего пространства. Разрешение такое:
привязанная политика ключа (когда она существует и включена), иначе default
рабочего пространства.
Вся конфигурация egress-правил выполняется в консоли под вашей сессией
(/api/workspace/firewall/*):
| Действие | Роль |
|---|---|
| Чтение политик, пресетов, обнаруженных инструментов, Simulate автономии | Member |
| Создание / редактирование / удаление egress-правил и политик | Developer+ |
Эндпоинт Test вхолостую (POST /test) | Developer+ |
| Чтение журнала событий и свёрток прогонов | Developer+ |
Связанное
Эксфильтрация данных
Угроза, которую решает контроль egress.
Стадии
Четыре поверхности и где сидит egress.
Вердикты
Что deny, audit и allow делают на проводе.
Блокировать инструменты
Отклонить инструмент извлечения по имени вместо назначения.
Опасные вызовы инструментов
Более широкий класс риска.
Справочник Firewall
Полный справочник правил + сопоставления, включая egress-списки.
