Logo Craft Homelab Docs Контакты Telegram
Безопасные границы для ИИ-агентов: данные, контент и внешние действия Трендовые github проекты в нашем телеграм канале. Подпишись →
25 июля 2026 г.

Как разорвать опасную цепочку в агентной системе

ИИ-агент становится особенно полезным, когда получает доступ к документам, почте, репозиториям и внешним сервисам. Вместе с полезностью растёт цена архитектурной ошибки: одна косвенная инструкция в письме или веб-странице способна повлиять на последующее действие агента.

Критический риск возникает при соединении трёх элементов в одной сессии: приватных данных, недоверенного контента и возможности менять внешний мир. Каждый элемент нужен в работе сам по себе. Данные дают агенту контекст, внешний контент помогает принять решение, а действия автоматизируют рутину. Их сочетание требует явных границ и минимальных привилегий.

Три элемента опасного контура

Приватные данные — это код, секреты, CRM, внутренние документы, переписка, таблицы и доступы к инфраструктуре. Обычно их передают агенту намеренно: чтобы найти причину сбоя, подготовить отчёт или изменить конфигурацию. Проблема появляется с ростом объёма контекста. Оператор уже не видит каждый фрагмент, который оказался в рабочем окне модели.

Недоверенный контент приходит из почты, тикетов, резюме, сайтов поставщиков, загруженных файлов и сообщений пользователей. Он может содержать прямую или скрытую инструкцию для модели. В контексте LLM инструкция и данные представлены текстом, поэтому разметка в промпте снижает риск, но не создаёт жёсткой технической изоляции. Источником проблемы бывает и обычный устаревший документ: его указание способно направить автоматизацию по неверному пути без злого умысла.

Внешнее действие — любое изменение, сохраняющееся за пределами текущего диалога. Сюда входят отправка письма, публикация сообщения, создание pull request, запрос к API, изменение записи в базе, запуск команды на сервере и загрузка файла. Даже исходящий HTTP-запрос способен стать каналом утечки, если в его параметрах оказался приватный контекст.

Когда агент читает чужой текст, видит конфиденциальные данные и обладает широкими правами, инъекция превращается из ошибки интерпретации в инцидент. Важно учитывать, что современные агенты часто действуют через код: комбинация shell-команд, скриптов и API-вызовов позволяет реализовать почти любой сценарий в пределах доступных учётных данных.

Почему фильтры не дают гарантии

Классификаторы промпт-инъекций, правила для опасных слов и инструкции вроде «считай этот блок только данными» остаются полезной гигиеной. Они могут отсечь известные шаблоны и случайные ошибки. Однако такие меры вероятностны: адаптивная атака получает новые попытки, а модель продолжает интерпретировать единый контекст.

Параллель с параметризованным SQL ограничена. В SQL параметры отделены от исполняемого кода структурой запроса и драйвером. Для текстового контекста LLM подобной встроенной границы нет. Поэтому защита должна располагаться вокруг модели: в управлении доступами, разделении процессов и контроле исходящих операций.

Разделяйте задачи по уровню доверия

Первое практическое правило — не давать одной агентной сессии одновременно читать произвольный внешний контент, обращаться к чувствительным данным и выполнять широкие внешние действия.

Например, обработку входящих резюме можно вынести в изолированный процесс без доступа к CRM и почтовой отправке. Отдельный сервис получает структурированное решение: идентификатор кандидата, категорию и причину для ручной проверки. Агент, который готовит письмо, работает в другой сессии, с другим набором разрешений и без исходного текста резюме.

Похожая схема применима к DevOps-задачам. Агент, который анализирует issue, логи или сторонний репозиторий, работает в песочнице и готовит план изменения. Второй контур выполняет ограниченный набор проверенных операций: запускает конкретный pipeline, создаёт ветку или открывает запрос на ревью. Доступ к production должен быть отдельным этапом с короткоживущими полномочиями и подтверждением.

Между контурами передавайте решение в узкой структуре вместо свободного текста. Валидированный JSON со схемой action, target, reason и допустимыми значениями существенно сокращает канал, через который может пройти нежелательная инструкция. Схема должна проверяться программно до исполнения.

Сужайте полномочия и исходящие каналы

У агента не должно быть постоянных ключей ко всем подключённым системам. Храните OAuth-токены, API-ключи и сервисные учётные данные в брокере доступа или отдельном слое интеграций. Агент запрашивает действие через профиль разрешений, а этот слой решает, допустим ли вызов.

Профиль полезно описывать конкретно: разрешённый метод, ресурс, список доменов, объём передаваемых данных, частоту запросов и срок жизни полномочия. Вместо права «работать с почтой» агент может получить возможность создать черновик для одного ящика. Вместо сетевого доступа ко всему интернету — запросы к нескольким API через прокси с журналированием.

Исходящий трафик требует отдельного наблюдения. Логи рассуждений модели могут быть неполными и не доказывают фактическое действие. Контроль на прокси, API-шлюзе, почтовом сервисе или уровне egress-сети фиксирует реальный запрос, его адресата, размер и результат. Для чувствительных операций добавляйте лимиты, allowlist и блокировку неожиданных форматов данных.

Эфемерные окружения снижают риск накопления контекста. Каждый запуск получает чистую сессию, ограниченный рабочий каталог и временные токены. После завершения удаляются промежуточные файлы и полномочия. Это не заменяет разделение доступов, но уменьшает последствия ошибки.

Подтверждения и человеческий контроль

В интерактивных инструментах человек остаётся важной линией защиты. Подтверждение стоит сохранять для необратимых операций: отправки, удаления, платежа, деплоя, изменения прав и публикации. Его полезность быстро снижается, если оператор подтверждает десятки похожих запросов без проверки.

Поэтому запрос на подтверждение должен показывать последствия в понятной форме: адресата, список затрагиваемых ресурсов, команду высокого уровня, объём данных и признак внешней передачи. Проверять длинный shell-скрипт перед каждым запуском трудно; гораздо надёжнее ограничить сценарии, которые вообще разрешено сформировать и исполнить.

Для автономных агентов человеческое подтверждение недоступно по определению. Здесь обязательны технические гарантии: раздельные сессии, узкие токены, проверка структуры команд, сетевые политики и аудит на границе системы.

Минимальный план внедрения

  1. Составьте карту данных, внешнего контента и действий для каждого агентного сценария.
  2. Найдите сессии, где все три категории доступны одновременно, и разделите их на независимые контуры.
  3. Замените постоянные ключи на короткоживущие полномочия с профилями разрешённых API-вызовов.
  4. Передавайте между агентами только данные по фиксированным схемам; валидируйте их до выполнения действия.
  5. Введите allowlist исходящих адресатов, лимиты объёма и аудит на прокси или API-шлюзе.
  6. Оставьте подтверждения для необратимых операций и сделайте их содержательными для оператора.
  7. Проверяйте архитектуру на сценариях с враждебным письмом, документом, issue и веб-страницей.

Безопасность агентных систем начинается с архитектуры окружения. Модель может ошибиться в интерпретации текста, поэтому риск следует локализовать заранее. Чёткие границы между данными, недоверенным вводом и полномочиями позволяют сохранить автоматизацию полезной и ограничить последствия неизбежных ошибок.