Публичный API и MCP-сервер — подключите своего AI-агента к SecureExec
Консоль EDR рассчитана на человека, который по ней кликает. Но всё большая часть работы по безопасности делается иначе. Алерты уходят в SIEM, инциденты ведутся в тикет-системе, отчёты собираются по ночам — а инженеры всё чаще работают вместе с AI-агентом в терминале или IDE, который сам читает данные, вызывает инструменты и готовит выводы.
Если данные детектов доступны только через веб-интерфейс, каждый такой процесс заканчивается копипастой: скриншоты в чате, ID алертов, перепечатанные в тикет, вывод команд, скопированный из SSH-сессии в отчёт.
Теперь у SecureExec есть два новых входа: публичный REST API по адресу /api/v1 и MCP-сервер по адресу /api/v1/mcp, который предоставляет те же операции как инструменты для AI-агентов. В этой статье — зачем мы их сделали, что с ними может агент и как они остаются безопасными.
REST для программ, MCP для агентов
REST API — для программ: SIEM, которая забирает алерты, ночной отчёт, дашборд, скрипт, подстраивающий правила детектирования. Обычный HTTP и JSON, постраничная выдача с непрозрачными курсорами, которые проходят дальше окна поиска в 10 000 результатов, и полный контракт в формате OpenAPI по адресу /api/v1/openapi.json.
MCP-сервер — для AI-агентов. Model Context Protocol — открытый стандарт, по которому агенты находят и вызывают инструменты. Вместо плагина под каждого ассистента сервис один раз описывает свои операции — названия, описания, JSON Schema аргументов, — и ими может пользоваться любой MCP-клиент: Claude Code, Cursor и другие. Агент читает каталог и сам решает, какой инструмент подходит к вопросу.
Это не два разных продукта. Каждый инструмент MCP — тонкая обёртка над той же операцией, что и соответствующий REST-эндпоинт, поэтому у них общие проверки прав, валидация, ошибки и журнал аудита.
Что может агент
Каталог покрывает весь цикл расследования:
- Алерты и AI-расследования — выбирать и фильтровать алерты по статусу, severity, правилу, хосту или вердикту AI; читать алерт целиком со связанными событиями, цепочкой процессов и данными threat intelligence; комментировать; менять статус; запускать встроенного AI-аналитика SecureExec и читать его вердикт.
- Кейсы — находить кейс, который авто-сортировка открыла по хосту, или создавать свой; привязывать алерты; вести заметки по инциденту в его комментариях; закрывать.
- Телеметрия — искать события Lucene-запросами, переходить к процессу по его
process_guidи считать алерты и события с группировкой по полям и интервалам времени, прежде чем читать сами события. - Эндпоинты — список хостов и состояние сенсора каждого агента: неотправленные события в спуле, потери в кольцевых буферах eBPF, последний heartbeat.
- Живая диагностика — тринадцать команд только на чтение на Linux-хостах: процессы, сокеты, открытые файлы, содержимое каталогов, чтение файлов, grep и find, хеши SHA-256, журнал systemd, история входов, модули ядра и сетевая конфигурация.
- Реагирование — изолировать хост от сети, снять изоляцию, завершить дерево процессов.
На практике это похоже на разговор с коллегой, у которого открыта консоль:
> Какие правила срабатывали чаще всего за сутки и где?
aggregate_alerts(group_by=rule_name,hostname, time_from=now-24h)
> Возьми самый свежий открытый алерт на web-01. Что делал этот процесс
и работает ли он сейчас?
get_alert → search_events(process_guid=…) → host_list_processes(…)
> Попроси встроенного аналитика вынести вердикт, потом запиши, что мы нашли,
и переведи алерт в in_progress.
start_ai_investigation → get_ai_investigation → add_alert_comment → update_alert_status
Почему это важно
Свой агент — и встроенный аналитик остаётся
У команд уже есть AI-ассистенты, которым они доверяют и за которые платят. Через MCP тот, которым уже пользуются ваши инженеры, становится оператором SecureExec без отдельной интеграции. Встроенного AI-аналитика он не заменяет — тот продолжает круглосуточно разбирать алерты. Внешний агент может запустить расследование, дождаться вердикта и прочитать вызовы инструментов, на которых он основан, — это второе мнение, которое можно проверить, а не принимать на веру.
Расследование со скоростью вопроса
«Какие хосты отправляли почту через порт 587 на этой неделе?» — один вызов: aggregate_events с q=dst_port:587 и group_by=process_name,hostname. Вопросы, которые в интерфейсе требовали десятка кликов и нескольких фильтров, занимают секунды.
Инструменты рассчитаны и на контекстное окно агента: сначала подсчёт, потом выборка; каталог полей (describe_fields), чтобы запросы называли реальные поля; компактные страницы по умолчанию и fields, чтобы забирать только то, что нужно на следующем шаге. Агент, который загружает по 100 КБ JSON за вызов, забывает начало расследования; тот, что сначала считает и читает по двадцать событий, — нет.
Живые улики без SSH
Во время инцидента самым быстрым ответом на вопрос «он ещё работает?» раньше был SSH-доступ на машину — ключи, выданные в спешке, и команды, которые никто не записал. Инструменты host_* идут через ту же очередь команд, что и консоль: только чтение, агент выполняет их без шелла, с ограничением по времени (30 секунд) и объёму вывода (1 МиБ), с проверкой путей и отказом читать секреты вроде /etc/shadow и приватных SSH-ключей. Передайте case_id — и команда попадёт в историю инцидента.
Интеграции без «клея»
Тот же API обслуживает и задачи без AI: синхронизацию алертов в SIEM или хранилище данных (сортировка по возрастанию с курсором делает синхронизацию инкрементальной), передачу инцидентов в тикет-систему, дашборды на агрегациях, настройку правил детектирования по всем алертам, которые AI-аналитик за неделю признал false_positive:
curl -H "Authorization: Bearer $SECUREEXEC_TOKEN" \
"https://secureexec.ru/api/v1/alerts?verdict=false_positive&time_from=now-7d"
Ограничения заложены в дизайн
Давать AI-агенту доступ к EDR допустимо, только если этот доступ узкий, видимый и обратимый. Это определило дизайн больше всего остального:
- Минимальные привилегии. У каждого токена свои права: чтение алертов, их изменение, чтение событий, диагностика, реагирование на хостах и так далее. Для нового токена заранее выбран доступ только на чтение, и токен никогда не получит больше, чем мог в консоли создавший его администратор.
- Управляемые токены. Секрет показывается один раз, хранится только его хеш. Токены истекают (по умолчанию через 90 дней), их можно отозвать в любой момент, и принадлежат они организации, а не конкретному человеку.
- Разрушительные действия помечены. Изоляция, завершение процессов и удаление кейсов отмечены в MCP как
destructiveHint, поэтому клиенты спрашивают человека перед их запуском, а инструкции сервера требуют от агента действовать только при явных доказательствах или с согласия человека. - Всё записывается. Каждое изменение попадает в журнал аудита организации с указанием токена. Комментарии и кейсы, созданные через API, подписаны в консоли названием токена, а команды на хостах видны в истории команд эндпоинта.
- Ошибки — это объяснения. Ошибки возвращаются модели как результат инструмента, с которым она может работать: если передать hostname там, где нужен ID эндпоинта, агент узнает, что ID эндпоинтов — это UUID, а не hostname, вместо голого 404.
Платформа, которую можно проверить
Два инструмента нужны не для расследований, а тем, кто эксплуатирует SecureExec: get_endpoint показывает состояние сенсора каждого агента, а get_storage_status — как хранятся события, алерты и логи агентов: объём, срок хранения, жизненный цикл и совпадают ли маппинги индексов со схемой. Вопрос «не теряем ли мы события на этом хосте?» становится вопросом, на который может ответить агент.
С чего начать
- В консоли откройте Администрирование → API токены, создайте токен, выберите доступ и срок действия. Начните с доступа только на чтение.
- Подключите агента. Для Claude Code это одна команда — страница токенов показывает её сразу с вашим токеном:
claude mcp add --transport http secureexec https://secureexec.ru/api/v1/mcp \
--header "Authorization: Bearer se_api_..."
Любой клиент с поддержкой транспорта Streamable HTTP и собственных заголовков подключается так же:
{ "mcpServers": { "secureexec": {
"type": "http",
"url": "https://secureexec.ru/api/v1/mcp",
"headers": { "Authorization": "Bearer se_api_..." } } } }
Для self-hosted установки укажите адрес своего сервера.
- Задайте вопрос: «Какие открытые алерты высокой важности есть сейчас и на каких хостах?»
Права на изменения, диагностику и реагирование давайте только тем токенам, которым они нужны. Список инструментов агента зависит от прав токена, так что токен только на чтение даже не увидит isolate_host.