Reference Architecture
Zero-Trust MCP Deployment — production-архитектура FlowLink, выровненная по OWASP GenAI MCP Security Guide и enterprise best practices.
~12 мин чтения
Обзор
FlowLink поддерживает несколько паттернов развёртывания — от одной машины для разработки до распределённой multi-region инсталляции с высоким доступом. Выберите архитектуру, соответствующую размеру вашей организации и требованиям к отказоустойчивости.
Single Host
Все компоненты на одной машине. Для разработки и тестирования.
1-2 агентаSmall Team
Выделенный relay-сервер + несколько agent-хостов. PostgreSQL, опционально Redis.
3-10 агентовEnterprise
HA relay-кластер, load balancer, PostgreSQL HA, Redis cluster, отдельные gateway-ноды.
100+ агентовSingle Host
All-in-one развёртывание: Relay, Gateway и Agent на одной машине. Идеально для локальной разработки, CI/CD pipeline и быстрого прототипирования.
Компоненты
- FlowLink Relay (port 9080 / 9081)
- FlowLink Gateway (port 8080)
- FlowLink Agent (ServerGuard)
- SQLite (embedded, no external DB)
1┌──────────────────────────────────────────────────┐2│ Single Host │3│ │4│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │5│ │ Gateway │ │ Relay │ │ Agent │ │6│ │ :8080 │──│ :9080 │──│ (ServerGuard)│ │7│ └──────────┘ └────┬─────┘ └──────────────┘ │8│ │ │9│ ┌──────▼──────┐ │10│ │ SQLite │ │11│ │ (embedded) │ │12│ └─────────────┘ │13└──────────────────────────────────────────────────┘
1# Быстрый старт — single host2curl -fsSL https://flowlink.dev/install.sh | bash3flowlink-relay init --mode single4flowlink-relay up
Small Team (3-10 агентов)
Выделенный relay-сервер с PostgreSQL для персистентного хранения политик и аудита. Агенты развёрнуты на отдельных хостах. Redis используется опционально для кэширования и pub/sub.
1 ┌─────────────────────────┐2 │ Relay Server │3 │ ┌──────────┐ ┌────────┐ │4 │ │ Relay │ │Gateway │ │5 │ │ :9080 │ │ :8080 │ │6 │ └────┬─────┘ └────────┘ │7 └───────┼───────────────────┘8 │9 ┌─────────────┼─────────────┐10 │ │ │11 ┌──────▼────┐ ┌─────▼─────┐ ┌────▼─────┐12 │ Agent #1 │ │ Agent #2 │ │ Agent #3 │13 │ (Host A) │ │ (Host B) │ │ (Host C) │14 └───────────┘ └───────────┘ └──────────┘1516 ┌──────┴──────┐17 │ PostgreSQL │18 │ :5432 │19 │ (primary) │20 ├─────────────┤21 │ Redis │22 │ :6379 │23 │ (optional) │24 └─────────────┘
1# Relay server2flowlink-relay init --mode team --db postgres://user:pass@db:5432/flowlink3flowlink-relay up45# На каждом agent-хосте6flowlink-agent install --relay wss://relay.example.com:9080 --token <AGENT_TOKEN>
Enterprise (100+ агентов)
Высокодоступная архитектура с relay-кластером, балансировщиком нагрузки, PostgreSQL HA (primary + replicas), Redis cluster и отдельными gateway-нодами. Подходит для крупных организаций с тысячами агентов.
1 ┌─────────────────┐2 │ Load Balancer │3 │ (nginx/caddy) │4 └────────┬────────┘5 │6 ┌──────────────┼──────────────┐7 │ │ │8 ┌──────▼──────┐┌─────▼──────┐┌──────▼──────┐9 │ FlowLink ││ FlowLink ││ FlowLink │10 │ Relay #1 ││ Relay #2 ││ Relay #3 │11 │ (active) ││(active) ││ (standby) │12 └──────┬──────┘└─────┬──────┘└──────┬──────┘13 │ │ │14 └──────────────┼──────────────┘15 │16 ┌──────────────▼──────────────┐17 │ PostgreSQL (Primary) │18 │ + Read Replicas │19 ├──────────────────────────────┤20 │ Redis Cluster │21 │ (3+ nodes) │22 └──────────────┬──────────────┘23 │24 ┌───────────┬───────────┼───────────┬───────────┐25 │ │ │ │ │26 ┌──────▼────┐┌─────▼─────┐┌───▼────┐┌─────▼────┐┌─────▼────┐27 │ Vault ││ SIEM ││Gateway ││ S3 ││ SMTP │28 │ (Secrets) ││(Splunk/ ││ :8080 ││(Backups) ││(Alerts) │29 │ ││ QRadar) ││ ││ ││ │30 └───────────┘└───────────┘└────────┘└──────────┘└──────────┘3132 ┌───────────┬───────────┬───────────┐33 │ │ │ │34 ┌──────▼────┐┌─────▼─────┐┌───▼────┐ ┌───▼────┐35 │ Agent ││ Agent ││ Agent │ │ Agent │36 │ Pool A ││ Pool B ││ Pool C │ │ ... │37 │ (50+) ││ (50+) ││ (50+) │ │ │38 └───────────┘└───────────┘└────────┘ └────────┘
Ключевые принципы
- Минимум 3 relay-ноды для кворума
- PostgreSQL: primary + 2 read replicas
- Redis Cluster mode с 3+ master-ноды
- Health checks через load balancer (10s interval)
- Auto-failover для всех критичных компонентов
Monitoring & Alerts
- Prometheus metrics endpoint (:9090/metrics)
- Grafana dashboard для relay-кластера
- Alertmanager → Slack/Telegram/PagerDuty
- SIEM интеграция (Splunk, QRadar, Elastic)
- Uptime SLA: 99.95% (monthly)
Multi-Region
Relay-кластеры в нескольких регионах с geo-routing, локальным принудительным применением политик и централизованным аудитом. Обеспечивает low-latency для глобально распределённых агентов и соответствие локальным требованиям к хранению данных.
1┌──────────────────────────────────────────────────────────┐2│ Global DNS (Geo-routing) │3│ EU → eu.relay.example.com │4│ US → us.relay.example.com │5│ APAC → ap.relay.example.com │6└───────┬──────────────────┬──────────────────┬────────────┘7 │ │ │8┌───────▼────────┐ ┌──────▼────────┐ ┌───────▼───────┐9│ EU Region │ │ US Region │ │ APAC Region │10│ ┌────────────┐ │ │ ┌───────────┐ │ │ ┌───────────┐ │11│ │Relay HA ×2 │ │ │ │Relay HA │ │ │ │Relay HA │ │12│ │PostgreSQL │ │ │ │×2 │ │ │ │×2 │ │13│ │ (primary) │ │ │ │PostgreSQL│ │ │ │PostgreSQL│ │14│ │Redis │ │ │ │(replica) │ │ │ │(replica) │ │15│ │ (sentinel)│ │ │ │Redis │ │ │ │Redis │ │16│ └────────────┘ │ │ └───────────┘ │ │ └───────────┘ │17└───────┬────────┘ └──────┬────────┘ └───────┬───────┘18 │ │ │19 Agents EU Agents US Agents APAC20 │ │ │21 └──────────────┬───┴──────────────────┘22 │23 ┌────────▼────────┐24 │ Central Audit │25 │ (aggregated) │26 └─────────────────┘
Air-Gapped
Полностью offline развёртывание без внешних зависимостей. Используется в средах с повышенными требованиями к безопасности: government, military, finance. Все пакеты доставляются через локальный registry.
Требования
- Локальный Docker registry (Harbor/Artifactory)
- Offline-пакеты FlowLink (.tar.gz)
- PostgreSQL бинарники в local mirror
- Self-signed CA для TLS между компонентами
- Пакеты обновлений через USB/shuttle
Ограничения
- Нет автоматического обновления signature DB
- Alerts только через локальный SMTP/syslog
- Approval queue — локальный веб-интерфейс
- Нет интеграции с cloud SIEM
- Обновления: ручная загрузка + verify signature
1# Air-gapped: подготовка пакетов (на машине с интернетом)2flowlink-relay package download --output ./flowlink-offline.tar.gz --include-all34# Air-gapped: установка (на изолированной машине)5scp flowlink-offline.tar.gz airgapped-host:/tmp/6ssh airgapped-host7 tar xzf /tmp/flowlink-offline.tar.gz -C /opt/flowlink8 flowlink-relay init --mode air-gapped --registry /opt/flowlink/registry9 flowlink-relay up
Требования к оборудованию
| Компонент | Мин. RAM | Мин. CPU | Рек. RAM | Рек. CPU | Хранилище |
|---|---|---|---|---|---|
| FlowLink Relay | 512 MB | 1 core | 4 GB | 4 cores | 20 GB SSD |
| FlowLink Gateway | 256 MB | 1 core | 2 GB | 2 cores | 10 GB SSD |
| Agent (ServerGuard) | 128 MB | 0.5 core | 512 MB | 1 core | 2 GB |
| PostgreSQL | 1 GB | 1 core | 16 GB | 4 cores | 100 GB SSD (min) |
| Redis | 256 MB | 0.5 core | 8 GB | 2 cores | 10 GB SSD |
| nginx / Caddy | 128 MB | 0.5 core | 1 GB | 2 cores | 5 GB |
| Vault (HashiCorp) | 256 MB | 1 core | 2 GB | 2 cores | 20 GB SSD |
Сетевые требования
| Порт | Протокол | Компонент | Описание | Направление |
|---|---|---|---|---|
| 8080 | HTTP/S | Gateway | Gateway HTTP API | Inbound |
| 9090 | WSS | Relay | Relay WebSocket (TLS) | Inbound |
| 5432 | TCP | PostgreSQL | База данных | Internal |
| 6379 | TCP | Redis | Кэш / pub-sub | Internal |
| 8200 | HTTP/S | Vault | Secret management | Internal |
| 9091 | HTTP | Relay | Prometheus metrics | Internal |
⚠ Порты 5432, 6379 и 8200 НЕ должны быть доступны извне. Используйте firewall rules (iptables/nftables/cloud security groups) для ограничения доступа только к internal-подсети.
Конфигурация TLS
Все соединения между компонентами FlowLink защищены TLS 1.3. Ниже приведены варианты настройки сертификатов для разных сценариев развёртывания.
Let's Encrypt
Автоматические сертификаты для публичных развёртываний. FlowLink поддерживает ACME-челлендж (HTTP-01 и DNS-01) через встроенный cert-manager.
1# flowlink.yaml2tls:3 provider: letsencrypt4 email: admin@example.com5 domains:6 - relay.example.com7 - gateway.example.com8 challenge: http-01
Custom CA
Корпоративный CA для internal-развёртываний. Сертификаты генерируются и подписываются вашим PKI.
1# flowlink.yaml2tls:3 provider: custom4 ca_cert: /etc/ssl/ca.pem5 server_cert: /etc/ssl/relay.pem6 server_key: /etc/ssl/relay-key.pem7 client_ca: /etc/ssl/client-ca.pem # mTLS8 mtls: true
Self-signed (dev)
Автогенерация self-signed сертификатов при первом запуске. Только для разработки.
1flowlink-relay init --tls self-signed2# Сертификаты сохраняются в ~/.flowlink/tls/
База данных
PostgreSQL — настройка
FlowLink использует PostgreSQL 15+ как основное хранилище. Для production рекомендуется использовать managed-сервис (Supabase, RDS, CloudSQL) или self-hosted с Patroni.
1-- Минимальная настройка postgresql.conf2shared_preload_libraries = 'pg_stat_statements'3max_connections = 2004shared_buffers = '4GB' -- 25% of RAM5effective_cache_size = '12GB' -- 75% of RAM6wal_level = replica7hot_standby = on
Connection Pooling
Используйте PgBouncer или встроенный Supavisor (Supabase) для управления пулом соединений. Рекомендуемые настройки:
1# pgbouncer.ini2[databases]3flowlink = host=db.internal port=5432 dbname=flowlink45[pgbouncer]6pool_mode = transaction7max_client_conn = 10008default_pool_size = 509reserve_pool_size = 1010reserve_pool_timeout = 3
Стратегия бэкапов
Комбинированный подход: PITR (Point-in-Time Recovery) + ежедневные full backup-ы + ежечасные WAL-архивы.
1# Full backup (ежедневно, cron)2pg_dump -Fc flowlink | gzip > /backup/flowlink-$(date +%Y%m%d).dump.gz34# PITR restore5pg_restore -d flowlink_restored /backup/flowlink-20260115.dump.gz67# Автоматические бэкапы в S3 (рекомендуется)8flowlink-relay backup configure --schedule "0 2 * * *" --target s3://my-bucket/flowlink/
Модель угроз MCP
FlowLink покрывает ключевые threat vectors для AI-агентов:
| Угроза | Риск | Митигация FlowLink |
|---|---|---|
| Tool Poisoning | Malicious MCP server returns harmful tool definitions | Shield проверяет все tool calls; policy engine валидирует имена, args и targets по allowlists |
| Prompt Injection через Tool | Tool output содержит инструкции, манипулирующие агентом | Output filtering + санитизация; approval queue для чувствительных операций |
| Over-Privileged Tools | Агент имеет доступ к tools, которые не нужны (prod DB из dev) | Per-agent least-privilege политики; tool scoping по environment и role |
| Data Exfiltration | Агент читает чувствительные данные и отправляет наружу | Anomaly detection (scp, rsync, curl); blast radius analysis; secret injection предотвращает утечку credentials |
| Credential Theft | Агент получает доступ к секретам в memory/logs | Zero-trust secret injection — credentials никогда не в контексте агента; runtime-only env vars |
| Unauthorized Access | Скомпрометированный агент обращается к ресурсам за пределами scope | Per-org encryption keys; RBAC; approval queue для cross-service операций |
| Supply Chain Attack | Скомпрометированный MCP server в tool chain | Tool allowlisting; command pattern analysis; audit trail для каждого tool invocation |
OWASP MCP Security Checklist
Маппинг фич FlowLink на рекомендации OWASP GenAI MCP Security:
| Рекомендация OWASP | Фича FlowLink | Конфигурация |
|---|---|---|
| Валидировать все tool inputs | Shield pattern matching + risk scoring | Policies → Rules → Patterns |
| Least-privilege доступ | Per-agent политики с tool allowlists | Политики → Agent scoping |
| Human oversight для критичных действий | Approval queue (Telegram / Web / API) | Policy action = "approve" |
| Логировать все tool invocations | Audit log + Command history | Всегда включено |
| Сканировать tool responses на sensitive data | Output filtering + DLP patterns | Shield → Output rules |
| Безопасное управление credentials | Zero-trust secret injection | Secrets → Injection mappings |
| Мониторинг аномального поведения | Anomaly detection (off-hours, lateral movement, privilege escalation) | Forensics → Timeline |
| Rate limiting | Per-agent и per-tool rate limits | Конфигурация → rate_limits |
| Шифрование данных | TLS everywhere, per-org X25519 keys, AES-256-GCM | Auto (TLS), Zero-Trust API |
| Incident response plan | Forensic timeline + snapshots + compliance reports | Forensics dashboard |
Hardening Guide
Relay
- Запуск от non-root с минимальными capabilities
- TLS с сильными cipher suites (ECDHE-ECDSA-AES256-GCM-SHA384)
- cors_allowed_origins — конкретные домены, не
*в production - rate_limits для всех agent IDs
- systemd watchdog
Database
- RLS (Row Level Security) на tenant-scoped таблицах
- service_role только для internal ops, anon для public
- Connection pooling (PgBouncer / Supabase)
- PITR + ежедневные бэкапы
- Шифрование at rest (LUKS)
Агенты
- Каждый агент — уникальный API key
- Минимальный набор политик: deny all → add allows
- Heartbeat для real-time мониторинга
- Auto-update + signature verification
- ServerGuard (--features gitops) — eBPF мониторинг