Эта страница о средствах управления шлюза, ограничивающих радиус взрыва. Контекст
upstream модели угроз — почему агенты являются высокоценными целями и как работает
инъекция — в Модели угроз. Для соответствующего
контроля, управляющего опасными отдельными вызовами инструментов, см.
Опасные вызовы инструментов.
1. Что делает агента избыточно мощным
Когда каждый агент в рабочем пространстве разделяет один ключ или когда ключ выпускается однажды и никогда не пересматривается, возможности дрейфуют вверх:- Неограниченные модели — агент может вызывать любую модель в рабочем пространстве, включая дорогие или высокомощные, которые ему никогда не нужны.
- Нет потолка расходов — бесконечный цикл, инициированная инъекция или биллинговая атака могут исчерпать баланс рабочего пространства до вашего замечания.
- Нет срока действия — ключ, выпущенный во время спринта, всё ещё валиден год спустя, долго после отставки агента, для которого он был создан.
- Нет IP-ограничения — учётные данные работают откуда угодно, поэтому утёкший ключ не имеет географического предела.
- Нет allow-листа инструментов — агент может вызывать любой инструмент, даже не связанный с его функцией.
2. Паттерн confused deputy
Confused deputy — специализация excessive agency. Агент не взломан; он убеждён. Payload prompt injection в извлечённой веб-странице, документе или результате инструмента говорит агенту совершить действие, которое он законно авторизован выполнять — перевести деньги, удалить запись, отправить сообщение — в интересах злоумышленника. Агент действует. Он был авторизован делать именно это. Проверка авторизации проходит. Ущерб нанесён. Защита требует двух вещей, работающих вместе:- Узкая область — агента нельзя обмануть на выполнение того, что его задача никогда не предполагала, потому что он вообще не авторизован это делать.
- Подтверждение человека для необратимых действий — даже в рамках авторизованной области высокорисковый вызов требует подтверждения человека перед выполнением.
3. Эшелонированная защита: четыре слоя
OrcaRouter применяет минимальные полномочия на четырёх независимых средствах управления, компонующихся на одном API-ключе. Ни одно не требует изменений в коде агента.Слой 1 — Ограниченный ключ (идентификация + жёсткие лимиты)
У каждого агента должен быть собственный API-ключ. Ключ несёт жёсткие лимиты, которые шлюз применяет независимо от того, что запрашивает агент:| Поле | Что ограничивает |
|---|---|
model_limits | Точный набор моделей, которые может вызывать этот ключ. Запрос любой другой модели отклоняется до выхода из шлюза. |
allow_ips | Запросы с любого адреса, не находящегося в этом списке, отклоняются на уровне аутентификации. Пустой означает нет IP-ограничения. |
credit_limit_usd | Пожизненный лимит расходов в USD. 0 означает неограниченно. Шлюз применяет это против накопленных расходов на ключе. |
expired_time | Абсолютная временная метка срока действия. -1 означает, что ключ никогда не истекает. Установите это на жизненный цикл развёртывания агента. |
environment | Метка (prod, staging, dev) для организации ключей и фильтрации логов аудита. |
Слой 2 — Политика Firewall (allow-list инструментов)
Привяжите политику firewall к ключу черезfirewall_policy_id. Политика управляет каждым вызовом инструмента, инициируемым
этим ключом:
- Пишите правила, которые разрешают имена инструментов, которые агент законно
использует (глобы имён инструментов поддерживаются — например,
db.query*). - Устанавливайте
default_verdictполитики вdeny, чтобы всё, что явно не перечислено, блокировалось. - Добавляйте предикаты аргументов для ограничения даже разрешённых инструментов —
например, разрешать
db.queryтолько когда аргументdatabaseсовпадает с конкретной схемой.
Слой 3 — Подтверждение человека для высокорисковых действий (pending_approval)
Для необратимых или высокоценных вызовов инструментов — диспетч платежа, удаление
записи, отправка email — добавьте правило pending_approval. Поток:
- Агент инициирует вызов инструмента. Firewall удерживает его и возвращает ответ «held», несущий id подтверждения. Вызов не достигает инструмента.
- Проверяющий одобряет или отклоняет вне основного канала — из консоли (Developer+) или через HMAC-подписанный webhook вашей собственной системы подтверждений.
- Ваш агент опрашивает id подтверждения. После одобрения он повторно отправляет
оригинальный вызов с одноразовым заголовком
X-OrcaRouter-Firewall-Approval. Шлюз пропускает его один раз.
Слой 4 — Ограничение стоимости на прогон (cap_cost)
Правило cap_cost запрещает любой вызов инструмента, когда накопленные расходы
прогона агента превышают потолок на правило в центах. Это автоматический выключатель
для:
- Бесконечных циклов, запущенных инъекцией.
- Биллинговых атак, разгоняющих расходы до замечания любым человеком.
- Случайной рекурсии в многошаговых планах.
cap_cost работает на уровне прогона, а не пожизненном уровне ключа — поэтому
он сбрасывается на каждый вызов агента, и один плохо ведущий себя прогон не может
исчерпать потолок credit_limit_usd ключа.
4. Хорошо ограниченный ключ агента — пример
Агент, резюмирующий тикеты клиентов с использованиемgpt-4o-mini и запрашивающий
реплику только для чтения, должен выглядеть так:
model_limits:["openai/gpt-4o-mini"]— не может эскалировать до более мощной или дорогой модели.allow_ips: CIDR исходящего трафика пула воркеров — ключ инертен везде ещё.credit_limit_usd: недельный потолок, соответствующий ожидаемой стоимости задачи, с запасом — например,5.00.expired_time: конец спринта или периода развёртывания — ключ самоистекает без ручной очистки.environment:"prod"— появляется в фильтрах логов и представлениях аномалий.guardrail_id: guardrail, ограниченный чувствительностью данных этого агента (маскирование PII, нет секретов в выводе).firewall_policy_id: политика, allow-list которой содержит толькоdb.query*иticket.read*, вердикт по умолчаниюdeny.
is_firewall_gateway помечает ключ как токен с областью шлюза для маршрутов
диспетча MCP и хука evaluate. Создавайте их только для агентов, программно
управляющих firewall — никогда для общего вывода. Ключ шлюза на пути вывода
раскрывает маршруты, до которых широко используемым ключам никогда не следует
доходить. Включение is_firewall_gateway требует Admin+.5. Требуемые роли
| Действие | Минимальная роль |
|---|---|
| Читать любой ключ, политику или событие firewall | Member |
| Создавать или редактировать ключи, политики firewall, правила | Developer |
| Одобрить удержанный вызов инструмента из консоли | Developer |
Включить is_firewall_gateway на ключе | Admin |
6. Связь с другими угрозами
Excessive agency является включателем почти каждой другой агентной угрозы:- Опасные вызовы инструментов — ключ со строгим allow-листом инструментов не может быть вынужден вызывать инструмент, который не перечислен, даже при успехе инъекции.
- Prompt injection — ограничение области снижает ущерб от инъекции; шлюзы подтверждения блокируют необратимые действия, которые инъекция пытается запустить.
- Модель угроз — полная карта поверхности атаки, показывающая место excessive agency относительно других векторов.
Ограниченные ключи и политики
Полный справочник полей ключей, порядок разрешения и модель границы
рабочего пространства.
Firewall
Создание политик, вердикты, поток HITL-подтверждений и полный API-справочник.
