Как изолировать AI-агента: Docker, отдельный сервер и минимум доступов
Claude Code, Codex и другие агенты запускают команды, устанавливают пакеты и читают файлы. Большинство разработчиков включают режим «полный доступ» и работают на машине, где лежат ключи от прода, облаков и банка. Разбираем, чем это грозит и как изолировать агента без потери удобства.
Сервер под Claude Code и AI-агентовПришлите стек — подберём серверное окружение без звонка. Подобрать окружениеОткуда риск
Агент не злонамерен, но он исполняет то, что прочитал. Файл README в чужом репозитории, комментарий в коде, ответ веб-страницы или вывод установленного пакета могут содержать инструкцию, которую модель воспримет как команду. Это называется prompt injection, и полностью защититься от него на уровне модели пока не умеет никто.
Добавьте к этому обычные ошибки: агент «почистил ненужное» и снёс не ту папку, подставил в коммит файл с токеном, установил пакет с опечаткой в названии. На ноутбуке разработчика у такого агента есть доступ ко всему: ~/.ssh, ~/.aws, токены облаков, сессии браузера, менеджер паролей.
Отдельная история: окружение агента по определению сетевое. Он скачивает зависимости, ходит в API, иногда в произвольные сайты. Один скомпрометированный пакет, и у злоумышленника тот же доступ, что у агента. Истории про взлом крупных компаний через ноутбук одного инженера повторяются каждый год, и агент с полными правами делает такой ноутбук ещё более привлекательной целью.
Три уровня изоляции
| Уровень | Что даёт | От чего не защищает | Сложность |
|---|---|---|---|
| Отдельный пользователь ОС | агент не видит ваши ключи и домашнюю папку | общие ядро, сеть, диск; sudo по ошибке | 10 минут |
| Docker-контейнер | своя файловая система, ограниченные порты и ресурсы, легко пересоздать | уязвимости в Docker, смонтированные тома, сеть хоста | час |
| Отдельный сервер | физическое разделение: на нём нет ничего вашего, кроме проекта | только от того, что сами на него положите | час плюс аренда |
Уровни комбинируются. Самая частая рабочая схема у наших клиентов: отдельный сервер в дата-центре, на нём отдельный пользователь под агента, проекты в Docker. Домашний ноутбук превращается в терминал, на котором нет ни кода, ни ключей.
Уровень 1: отдельный пользователь
Минимум, который стоит сделать сегодня, даже на ноутбуке:
sudo adduser agent --disabled-password
sudo -u agent -i
# внутри: установить Node.js, Claude Code, клонировать проект
У пользователя agent нет доступа к вашему ~/.ssh, нет sudo, нет сессий браузера. Для Git выдайте ему отдельный deploy-ключ с правами только на нужный репозиторий. Для API-ключей облаков создайте отдельные ключи с минимальными правами и сроком жизни.
Уровень 2: Docker
Контейнер даёт воспроизводимость и быстрый откат: сломал окружение, пересоздал за минуту. Базовый образ под агента содержит Node.js, Python, Git и сам агент, проект монтируется как том. Что важно настроить:
- Не монтируйте домашнюю папку хоста. Только папку проекта и отдельный том под кэш агента.
- Не пробрасывайте Docker-сокет. Контейнер с доступом к
/var/run/docker.sockравен root на хосте. - Ограничьте ресурсы.
--memory,--cpus,--pids-limit: агент, ушедший в бесконечный цикл сборки, не положит сервер. - Отдельная сеть. Если агенту не нужен доступ к внутренним сервисам, не давайте его. Исходящий трафик при необходимости ограничивается прокси.
- Секреты через переменные окружения с коротким сроком, а не файлами в образе.
Приём, который экономит время: один образ, много контейнеров. Под каждый проект или каждого агента свой контейнер из того же образа. Контейнер стоит ничего, пересоздаётся за секунды, а утечка из одного не затрагивает остальные.
Уровень 3: отдельный сервер
Это единственный уровень, который защищает от ошибок в самом Docker и от ваших собственных привычек. На сервере под агента физически нет ничего, кроме кода проекта и тестовых данных. Нет SSH-ключей от прода, нет банковских сессий, нет личных файлов.
Дополнительные плюсы, ради которых разработчики переезжают на серверы даже без оглядки на безопасность:
- Агент работает часами, пока ноутбук закрыт. Подключение с телефона через SSH или веб-терминал.
- Можно держать несколько серверов: по одному под каждого агента или проект. Часть наших клиентов разводит Claude Code, Codex и локальную модель по разным машинам, чтобы они не мешали друг другу и не делили лимиты по ресурсам.
- Тяжёлые сборки и тесты не греют ноутбук. При необходимости их размазывают по нескольким серверам.
- Команда «почисти машину» перестаёт быть страшной: сервер можно переустановить.
Небольшой VPS с 4 ядрами и 8 ГБ памяти справляется с одним агентом на типовом веб-проекте. Выделенный сервер нужен, когда проектов много, сборки тяжёлые или рядом крутится локальная LLM. Разбор требований по ресурсам есть в статье сервер для Claude Code.
Правила, которые работают на любом уровне
- Агент не знает секретов прода. Деплой делает отдельный CI с собственными ключами, а не агент напрямую.
- Отдельный стенд под каждую фичу. Агент проверяет работу на своём стенде, а не на общем тестовом сервере.
- Ревью перед мержем. Код агента попадает в основную ветку через pull request, который читает человек или второй агент другой модели.
- Бэкап отделён от агента. Снимки диска и репозитории хранятся там, куда у агента нет доступа на запись.
- Логи действий. История команд агента пишется в файл вне его домашней папки. Когда что-то сломалось, вы знаете, что именно он сделал.
Что мы предлагаем
Сервер под агента в нашем дата-центре в Москве с готовой изоляцией: отдельный пользователь, Docker с лимитами, бэкапы, мониторинг и доступ с телефона. Настроим за день, покажем, как пересоздавать окружение одной командой. Если у вас уже есть свой сервер, разместим его в стойке по модели colocation.
Частые вопросы
Безопасно ли давать Claude Code полный доступ?
На рабочем ноутбуке с ключами и паролями нет. Полный доступ допустим внутри изолированного окружения: отдельный пользователь без sudo, Docker-контейнер без доступа к хосту или отдельный сервер, где нет ничего, кроме проекта.
Достаточно ли Docker для изоляции AI-агента?
Для большинства задач да, если не монтировать домашнюю папку, не пробрасывать Docker-сокет и ограничить ресурсы. От ошибок в самом Docker и от случайно смонтированных секретов защищает только отдельный сервер.
Какой сервер нужен под одного AI-агента?
VPS с 4 ядрами, 8 ГБ памяти и NVMe-диском хватает на одного агента и типовой веб-проект. Для нескольких агентов, тяжёлых сборок или локальной LLM берут выделенный сервер.
Что такое prompt injection и почему это касается агентов?
Это инструкция, спрятанная в данных, которые читает модель: в файле, на веб-странице, в выводе команды. Агент может воспринять её как команду и выполнить. Изоляция ограничивает ущерб, если это случится.