Перейти к основному содержанию
Статические правила firewall ловят вызовы, которые вы знали назвать. Они не могут поймать вызов, который по отдельности разрешён, но неправилен в совокупности — 200 вызовов db.query в 3 часа ночи в воскресенье, агент, долбящий один сбойный инструмент в тесном цикле, переход от инструмента к инструменту, который это рабочее пространство никогда раньше не делало. Каждый вызов проходит каждое правило; проблема — паттерн. Детектирование аномалий firewall — это поведенческий слой. Шлюз обучается нормальной форме использования инструментов вашего рабочего пространства и оценивает живую активность против неё, выводя отклонения в ленте, которую может читать любой Member. Так вы замечаете скомпрометированного агента или убегающий цикл, не написав заранее правило для формы, которую никогда не видели. Эта страница — сфокусированная посадочная для этой ленты детектирования аномалий firewall; обзор Firewall — глубокий справочник.
Лента аномалий — это детектирование, не применение. Она говорит вам, что выглядит не так — она не блокирует. Когда паттерн реален, вы превращаете его в правило или вердикт с лимитом частоты, так чтобы следующее появление останавливалось inline. Чтение ленты открыто каждому Member; превращение находки в политику — Developer+.

1. Что флагирует детектирование аномалий firewall

Четыре вида сигналов, каждый привязан к своему режиму сбоя:
Объём вызовов на инструмент, оценённый против обученного базиса по часу недели. Инструмент срабатывает rate_spike, когда его счётчик преодолевает абсолютный пол и идёт высоко относительно базиса для этого часа, или когда его z-score пересекает порог. Привязка к часу недели (не часу дня) означает, что вторник-14:00 сравнивается с прошлыми вторниками-14:00, так что законный пиковый трафик буднего дня не читается как всплеск, тогда как тот же объём в 3 часа ночи в воскресенье — да.
То же сравнение по часу недели, применённое к накопленной стоимости, а не счётчику вызовов. Инструмент, чьи траты идут значительно сверх его обученной нормы стоимости, всплывает как burn_spike — сигнал раннего предупреждения для агента, который дорог до того, как деструктивен.
Группа (conversation, tool, arguments), которая повторяется много раз внутри короткого окна — агент, застрявший на повторном выпуске того же сбойного вызова инструмента вместо восстановления. Медленный, законный опрос его не срабатывает; сигнал — это тесный цикл.
Последовательный переход tool_a → tool_b, для которого у этого рабочего пространства нет обученного базиса. В первый раз, когда агент идёт, скажем, crm.read → http.fetch, это ребро ново — ровно такой шаг делает цепочка эксфильтрации данных.
Детектирование аномалий дополняет правила последовательностей. Правило последовательности совпадает с цепочкой, которую вы определили заранее; novel_path флагирует переход, который вы не определили — так вы открываете цепочки, для которых стоит написать правило последовательности.

2. 14-дневный базис

Детектор — это не фиксированный порог, это обученная норма. Для каждого ведра (tool, hour-of-week) шлюз держит скользящий ожидаемый счётчик вызовов и стоимость, заполненные из 14-дневного ретроспективного окна (около двух вхождений каждого ведра по часу недели — достаточно, чтобы сгладить один странный день, не теряя недельную форму). novel_path использует параллельный базис переходов: обученный счётчик вхождений для каждого ребра tool_a → tool_b в этот час недели. У совершенно нового рабочего пространства пока нет базиса. Это нормально: без обученной нормы детекторы объёма откатываются к абсолютному полу, так что очевидный поток всё равно ловится в первый день, пока нормы по часам наполняются.
СигналИз чего он обучается
rate_spike / burn_spikeСчётчик и стоимость на (tool, hour-of-week), 14-дневное скользящее.
novel_pathСчётчик переходов на (tool_a → tool_b, hour-of-week).
retry_loopНет базиса — оконный порог повтора на (conversation, tool, args).
Лента сообщает только имена инструментов, отредактированные id токенов и счётчики. Сырой id API-ключа никогда не появляется — каждый элемент несёт односторонний дайджест вызывающего токена, так что вы можете различить две аномалии без того, чтобы лента когда-либо утекла ключ за ними.

3. Один конкретный разбор

Допустим, ключ агента начинает зацикливаться. Подтяните ленту в консоли под Security → Firewall → Anomalies или прочитайте её напрямую — любой Member может:
curl https://api.orcarouter.ai/api/workspace/firewall/anomalies \
  -H "Authorization: Bearer $ORCA_SESSION_TOKEN"
{
  "data": {
    "items": [
      {
        "id": "3f1c9a7b0e2d4a86",
        "kind": "retry_loop",
        "tool_name": "db.query",
        "token_id_redacted": "sk-***-9f2a",
        "count": 412,
        "baseline": 0,
        "z_score": 0,
        "suggested_action": "rate_limit",
        "first_seen": 1749470400,
        "last_seen": 1749470520
      }
    ],
    "snoozed_until": 0
  }
}
Элемент retry_loop не несёт baseline или z_score (эти поля остаются 0 — они принадлежат детекторам объёма/стоимости) и несёт стабильный непрозрачный id, так что два разных цикла на одном инструменте не сталкиваются на одной строке. rate_spike — обратное: он сообщает обученный baseline и z_score и оставляет id пустым.
$ORCA_SESSION_TOKEN — это ваша консольная сессия / access-токен — та же аутентификация, что у каждого управляющего маршрута /api/workspace/firewall/*. Это не ретрансляционный ключ sk-orca-… (они только для вызовов модели /v1/*) и не ключ firewall-gateway. Ретрансляционный ключ на этом маршруте отвергается.
Каждый элемент называет инструмент, отредактированный токен, сколько вызовов сработало, z-score (только сигналы объёма/стоимости) и suggested_action (rate_limit, block_tool или review). Отсюда вы действуете: бросьте правило deny на инструмент, проверьте его аргументы или откройте журнал событий, чтобы увидеть ровно, что сделал агент.

4. Откладывание ленты

Известный нагрузочный тест или плановая дозагрузка зажгут ленту. Вместо того чтобы гоняться за шумом, отложите её — на срок до 7 дней:
curl -X POST https://api.orcarouter.ai/api/workspace/firewall/anomalies/snooze \
  -H "Authorization: Bearer $ORCA_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"until": 1749643200}'
Пока откладывание активно, лента не возвращает элементов и сообщает snoozed_until; она очищается сама в тот момент, когда дедлайн проходит. Потолок — жёсткий предел — толстопалый или враждебный until дальше в будущее ограничивается, так что детектирование аномалий нельзя заглушить бессрочно. POST’инг прошлого или текущего until очищает существующее откладывание.
Чтение ленты — действие Member; откладывание её — Developer+ — заглушение сигнала безопасности уровня рабочего пространства — это запись, не чтение.

5. RBAC с одного взгляда

Поверхность аналитики делится по обычной линии чтение/действие:
ДействиеРоль
Прочитать ленту аномалийMember
Прочитать настройки, политики, обнаруженные инструментыMember
Отложить лентуDeveloper+
Events, runs, aggregate, traceDeveloper+
Создать правило из находкиDeveloper+
Более лёгкие свёрточные представления — настройки, политики и карта покрытия discovered-tools — тоже чтения Member; построчные детали событий и прогонов — Developer+, поскольку они несут данные аргументов на каждый вызов.

6. От сигнала к политике

Лента — это начало цикла, не конец:
1

Заметьте паттерн

novel_path или rate_spike показывает форму, которую вы не ожидали. Прочитайте её против журнала событий, чтобы подтвердить, что она реальна, а не разовая.
2

Напишите правило

Превратите находку в применение — блокировку, клаузу аргумента, правило последовательности для цепочки или потолок стоимости для трат.
3

Разверните безопасно

Сначала приземлите правило под shadow-режимом, так чтобы вы измерили его радиус поражения до того, как оно заблокирует хоть один вызов, затем применяйте.

Куда двигаться дальше

Обзор Firewall

Полный справочник детектирования аномалий и остальная плоскость политик.

Журнал событий

Углубитесь из аномалии в точные вызовы за ней.

Заблокировать инструмент

Превратите находку в применяющее правило.

Режимы применения

Как детектирование, audit, shadow и enforce вписываются вместе.
Об угрозах, которые выявляют эти сигналы, см. эксфильтрацию данных и избыточную автономию.