1. Угроза denial of wallet на ИИ
Инцидент denial-of-wallet обычно прослеживается к одной из трёх форм:Неуправляемый цикл агента
Неуправляемый цикл агента
Агент повторяет один и тот же отказывающий инструмент или перепланирует в
узком цикле, переплачивая за токены на каждом проходе. Злого умысла не
требуется — достаточно плохого условия остановки.
Внедрённый веер
Внедрённый веер
Prompt injection направляет агента на
спам инструментом или выпуск чрезмерных запросов, умножая расход за ход.
Утёкший или сверх-ограниченный ключ
Утёкший или сверх-ограниченный ключ
Ключ оказывается там, где не должен — закоммиченный
.env, расшаренный
ноутбук — и злоумышленник гоняет инференс на вашем аккаунте, пока расход не
заметят.2. Потолок стоимости на прогон с cap_cost
Вердикт cap_cost Firewall — это автоматический выключатель для неуправляемых
циклов. Вы пишете его как правило с потолком в центах на прогон; движок суммирует
накопленный расход прогона агента, и как только прогон пересекает потолок, движок
разрешает вердикт в deny — каждый последующий вызов инструмента в этом прогоне
блокируется.
cap_cost — это потолок до отправки: он оценивается до того, как вызов достигнет
инструмента, так что он останавливает следующий дорогой вызов, а не возвращает
уже совершённый. Типичный catch-all потолок на каждый инструмент:
firewall_blocked — помечено skip-retry, так что цикл не может молотить вокруг
запрета. Потолок — на прогон агента и суммируется по всей политике рабочего
пространства, так что один неуправляемый разговор не может перетечь в бюджет
другого.
См. Справочник правил Firewall для полного языка
сопоставления и того, где cap_cost стоит среди других вердиктов.
3. Жёсткий бюджет на ключ с credit_limit_usd
cap_cost ограничивает один прогон. Чтобы ограничить ключ — каждый прогон,
который он когда-либо выпускает — установите credit_limit_usd на API-ключе. Это
жёсткий потолок расхода в USD на пожизненный расход этого ключа: шлюз конвертирует
его в оставшуюся квоту ключа, и как только ключ потратил своё содержание,
дальнейшие relay-вызовы отклоняются за недостаток кредита. 0 означает
безлимитный.
Сочетайте его с другими ограничениями ключа, чтобы утёкший ключ был ограничен по
каждой оси сразу:
credit_limit_usd
Жёсткий потолок расхода в USD для ключа (
0 = безлимитный).expired_time
Метка времени авто-истечения (
-1 = никогда). Короткоживущий ключ ограничивает
окно радиуса поражения.allow_ips
Привяжите ключ к известным исходным IP — утёкший ключ бесполезен вне сети.
model_limits
Ограничьте ключ конкретными моделями, чтобы он вообще не мог достичь самых
дорогих.
credit_limit_usd,
который он никогда не должен легитимно превышать. Лимит — это бюджет, а не догадка о
поведении злоумышленника — даже полностью скомпрометированный ключ останавливается
на потолке.
Настройте всё это из редактора ключей консоли (или token API) под вашей сессией —
это настройки ключа, а не relay-вызовы. Только запросы вывода
/v1/* используют
сам ключ sk-orca-.... Редактирование лимита вступает в силу со следующего запроса
ключа; без передеплоя.4. Поймайте всплеск, который вы не предсказали: аномалии стоимости
Статический потолок останавливает расход, который вы предвидели. Обнаружение аномалий Firewall ловит расход, который вы не предвидели. Оно выучивает нормальную форму использования инструментов каждого рабочего пространства относительно базового уровня по часу недели (скользящее 14-дневное среднее) и всплывает отклонения в ленте, читаемой участником:| Аномалия | Что отмечает |
|---|---|
burn_spike | Стоимость инструмента далеко выше его выученной базовой стоимости — сигнал denial-of-wallet. |
rate_spike | Объём вызовов далеко выше базового уровня — веер и наводнения. |
retry_loop | Один и тот же инструмент с одними и теми же аргументами, повторяющийся в узком окне — классический неуправляемый цикл. |
5. Собираем вместе
Наслоите три так, чтобы неуправляемость никогда не достигла счёта:| Контроль | Область | Когда срабатывает |
|---|---|---|
Правило cap_cost | Один прогон агента | Накопленный расход прогона пересекает потолок в центах |
credit_limit_usd | Один ключ, пожизненно | Общий расход ключа достигает его потолка в USD |
burn_spike / retry_loop | Рабочее пространство, выученное | Расход или паттерн повтора отклоняется от базового уровня |
cap_cost на прогон на *, credit_limit_usd на
каждом ключе агента и привычка проверять ленту аномалий. Выкатывайте новую
политику cap_cost сначала в shadow mode
— она логирует [shadow] would deny без блокировки — так что вы можете подобрать
размер потолка относительно реального трафика до того, как он начнёт кусаться.
6. Связанные угрозы
Denial of wallet редко приходит в одиночку — цикл, сжигающий ваш бюджет, часто управляется чем-то вышестоящим:- Prompt injection — внедрённые инструкции являются распространённым триггером для веера и спама инструментов.
- Excessive agency — агент со слишком большой свободой имеет больше способов тратить.
- Опасные вызовы инструментов — та же плоскость правил firewall ограничивает что инструмент может делать, а не только сколько это стоит.
- Модель угроз — где неуправляемая стоимость вписывается в полную агентную поверхность атаки.
Обзор Firewall
Вердикты, обнаружение аномалий, уровни автономии и наблюдаемость.
Ограниченные ключи и политики
Как лимиты ключей, guardrails и политики firewall комбинируются на каждом ключе.
