Перейти к содержанию

Глава 4. Инструментальный шлюз, подтверждения и журнал аудита

1. Где на самом деле происходят дорогие инциденты

Самые дорогие сбои в агентных системах обычно случаются не тогда, когда модель “не так подумала”, а тогда, когда система перешла к действию:

  • что-то записала;
  • что-то отправила;
  • что-то изменила;
  • куда-то выгрузила данные.

Именно поэтому execution boundary важнее, чем многим кажется.

2. Инструментальный шлюз должен быть скучным и жестким

У хорошего tool gateway очень простая задача: не дать агенту превратить красивое рассуждение в неконтролируемый side effect.

Минимальные требования:

  • принимать только разрешенные инструменты;
  • валидировать аргументы;
  • знать риск-класс операции;
  • уметь останавливать вызов до side effect;
  • отправлять опасные операции на human approval;
  • журналировать и решение, и факт исполнения.

Ниже очень практичный шаблон policy для tool execution:

tools:
  read_kb:
    risk: low
    approval: none
    allowed_roles: ["agent_runtime"]
  create_ticket:
    risk: medium
    approval: manager
    allowed_roles: ["agent_runtime"]
  prod_db_write:
    risk: critical
    approval: security_and_owner
    allowed_roles: []
    environments: ["staging"]

В этом YAML нет ничего “умного”, и именно это хорошо. Security perimeter любит обозримые правила.

3. Human approval должен быть нормальным процессом

Есть действия, которые агент не должен завершать самостоятельно вообще:

  • изменение production-данных;
  • отправка сообщений во внешние каналы;
  • операции с финансами;
  • доступ к чувствительным документам;
  • любые действия с высоким blast radius.

Для них нужен не просто toggle “approval required”, а нормальный сценарий подтверждения.

Как выглядит approval flow для опасного действия

sequenceDiagram
    autonumber
    participant R as Agent runtime
    participant P as Policy engine
    participant H as Human approver
    participant T as Tool gateway
    participant A as Audit trail

    R->>P: Request risky action
    P-->>R: Approval required
    R->>H: Ask for approval with context
    H-->>R: Approve / reject
    R->>T: Execute only if approved
    T->>A: Persist action + approval record

Хороший approval flow всегда хранит:

  • кто запросил действие;
  • какой был risk class;
  • что именно собирались сделать;
  • кто подтвердил;
  • в какое время;
  • был ли overridden policy gate.

4. На выходе тоже нужна защита

Многие команды старательно фильтруют входящие данные, но почти не думают о выходе. Это ошибка.

Утечка чаще всего происходит на egress:

  • агент вставил лишний фрагмент документа в ответ;
  • отправил чувствительный текст во внешний tool;
  • положил приватные данные в лог;
  • вернул пользователю результат из чужого tenant.

Минимальный egress checklist:

  • redact PII where required;
  • mask secrets and tokens;
  • validate tenant ownership of retrieved content;
  • restrict outbound destinations;
  • log all sensitive outbound actions.

5. Журнал аудита должен быть пригоден для расследования

Просто “включить tracing” недостаточно. Для security тебе нужен trail, по которому можно восстановить историю события.

На один рискованный run полезно хранить:

  • входной request id;
  • principal и tenant;
  • policy decision;
  • prompt assembly metadata;
  • tool call arguments в безопасно редактированном виде;
  • approval records;
  • итоговый egress event.

Если после инцидента команда видит только “модель вызвала tool X”, расследование уже наполовину проиграно.

6. Security perimeter как набор привычек

Очень хочется найти одну волшебную библиотеку, которая “сделает безопасность”. Но на практике perimeter состоит из набора привычек:

  • недоверенные данные явно маркируются;
  • agent runtime не получает лишних прав;
  • tools идут только через gateway;
  • опасные действия требуют approval;
  • все ключевые шаги попадают в audit trail;
  • система умеет не только выполнять, но и отказывать.

Это и есть взрослая безопасность для агентной платформы.

7. Практический чеклист

Если хочешь быстро оценить свой текущий контур, пройди по этому списку:

  • Есть ли у агента отдельная identity model?
  • Разделены ли trusted instructions и untrusted content?
  • Все ли tools проходят через gateway?
  • Есть ли allowlist и arg validation?
  • Есть ли approval flow для high-risk действий?
  • Есть ли egress filtering?
  • Достаточен ли audit trail для расследования?
  • Видно ли в traces, какой policy gate сработал?

Если на несколько пунктов подряд ответ “нет”, значит эту главу ты открыл очень вовремя.

8. Что читать дальше