Infrastructure Map
Семантический граф инфраструктуры — автоматическое построение карты сервисов, подключений и зависимостей по всем подключённым агентам.
~8 мин чтения
Обзор
Infrastructure Map автоматически строит направленный граф вашей инфраструктуры. Каждый подключённый агент сообщает о обнаруженных процессах, контейнерах, сетевых подключениях и открытых портах — relay агрегирует данные и формирует единую топологию.
На основе графа FlowLink рассчитывает health-статусы для каждого узла, risk-оценки связей и предоставляет API для Blast Radius анализа — ключевой компонент модуля Forensics.
Пример: "Перезапусти сервис оплаты"
1. Агент запрашивает карту: find_service(name="billing")
2. Карта возвращает: billing-api, prod, critical, host=prod-k8s-01
3. Агент запрашивает топологию: service_topology("billing-api")
4. Карта показывает: БД payments-db, endpoint /api/v1/billing, 3 секрета
5. Агент формирует безопасную команду с инжекцией секретов из Vault
Как строится карта
Карта собирается из данных discovery-сканирования, которое выполняет каждый агент. Процесс полностью автоматический и не требует ручной конфигурации.
Дискавери агента
Агент сканирует хост: процессы, Docker-контейнеры, прослушиваемые порты, активные сетевые соединения, переменные окружения, конфигурационные файлы.
Отправка в relay
Каждый агент формирует InfrastructureSnapshot — набор узлов (nodes) и рёбер (edges) — и отправляет на relay по зашифрованному каналу.
Графовый движок
Relay передаёт снапшоты в графовый движок, который объединяет данные от всех агентов в единую топологию. Дедупликация узлов по fingerprint (host + port + service name).
Мерж с Service Catalog
Граф обогащается данными из Service Catalog: owner, environment, criticality level, approval policies,теги.
Расчёт health и risk
Для каждого узла рассчитывается health-статус на основе метрик агента (CPU, memory, uptime). Для каждого ребра — risk-оценка на основе политики: публичный доступ, отсутствие mTLS, критичность цели.
💡 Discovery → Map автоматически
При каждом сканировании агент создаёт InfrastructureSnapshot — узлы и рёбра. Relay записывает в граф. Карта всегда актуальна.
Типы сущностей
🖥️
Host
Сервер, ВМ, нода
⚙️
Service
Микросервис, приложение
🗄️
Database
Postgres, MySQL, Redis...
📬
Queue
Kafka, RabbitMQ, NATS...
🌐
Endpoint
HTTP/gRPC API
🔑
SecretRef
Ссылка на секрет в Vault
📊
Monitor
Prometheus, Grafana...
🏷️
Environment
prod, staging, dev
Связи
Host ───HOSTS_SERVICE──→ Service
Service ───SERVICE_USES_DB──→ Database
Service ───SERVICE_USES_QUEUE──→ Queue
Service ───SERVICE_EXPOSES_API──→ Endpoint
Service ───SERVICE_MONITORED_BY──→ Monitor
Service ───SERVICE_HAS_SECRET──→ SecretRef (без значений!)
Service ───SERVICE_IN_ENV──→ Environment
Service ───DEPENDS_ON──→ Service
Визуализация
Infrastructure Map отображается в дашборде FlowLink как интерактивный граф. Узлы — сервисы и агенты, рёбра — сетевые подключения и зависимости.
Узлы (Nodes)
Зелёный — сервис здоров, все метрики в норме
Жёлтый — предупреждения (высокий CPU, повторные рестарты)
Красный — сервис недоступен или критические ошибки
Серый — агент оффлайн, данных нет
Рёбра (Edges)
Низкий риск — внутренний трафик, mTLS, trusted
Средний риск — cross-env, публичный балансировщик
Высокий риск — публичный доступ, без шифрования, критичная цель
Интерактивность
- Наведение на узел — tooltip с метаданными (host, environment, owner, health)
- Клик на узел — переход к детальному виду сервиса
- Клик на ребро — детали подключения (протокол, порт, risk score)
- Фильтрация по environment, health, risk level, тегам
- Поиск по имени сервиса или хоста
API
Все endpoints доступны через REST API с авторизацией по Bearer token.
GET /api/v1/infra/map
Полный граф инфраструктуры: все узлы и рёбра.
1{2 "nodes": [3 {4 "id": "billing-api",5 "type": "service",6 "host": "prod-k8s-01",7 "environment": "prod",8 "health": "healthy",9 "risk_score": 0.12,10 "owner": "payments-team",11 "criticality": "critical",12 "agent_id": "agent-a1b2c3"13 },14 {15 "id": "payments-db",16 "type": "database",17 "host": "prod-db-01",18 "environment": "prod",19 "health": "healthy",20 "risk_score": 0.8521 }22 ],23 "edges": [24 {25 "source": "billing-api",26 "target": "payments-db",27 "type": "SERVICE_USES_DB",28 "protocol": "postgresql",29 "risk_score": 0.15,30 "encrypted": true31 },32 {33 "source": "billing-api",34 "target": "notification-api",35 "type": "DEPENDS_ON",36 "protocol": "http",37 "risk_score": 0.08,38 "encrypted": false39 }40 ],41 "meta": {42 "total_nodes": 47,43 "total_edges": 89,44 "last_updated": "2026-05-15T10:30:00Z"45 }46}
GET /api/v1/infra/map/{agent_id}
Локальная карта конкретного агента — только те узлы и рёбра, которые видны этому агенту.
1curl "https://flowlink.flow-masters.ru/api/v1/infra/map/agent-a1b2c3" \2 -H "Authorization: Bearer $TOKEN"
GET /api/v1/infra/dependencies/{service_name}
Обратные зависимости — какие сервисы зависят от указанного. Полезно перед рестартом или деплоем.
1{2 "service": "payments-db",3 "dependents": [4 {5 "service": "billing-api",6 "type": "SERVICE_USES_DB",7 "criticality": "critical",8 "environment": "prod"9 },10 {11 "service": "refund-service",12 "type": "SERVICE_USES_DB",13 "criticality": "high",14 "environment": "prod"15 },16 {17 "service": "analytics-worker",18 "type": "SERVICE_USES_DB",19 "criticality": "low",20 "environment": "prod"21 }22 ],23 "total_dependents": 324}
GET /api/v1/infra/blast-radius/{agent_id}
Blast radius — какие сервисы достижимы от этого агента через сетевой граф. Ключевой endpoint для Forensics.
1{2 "agent_id": "agent-a1b2c3",3 "blast_radius": {4 "direct": [5 { "service": "payments-db", "risk_score": 0.85 },6 { "service": "notification-api", "risk_score": 0.12 },7 { "service": "redis-cache", "risk_score": 0.30 }8 ],9 "transitive": [10 { "service": "email-gateway", "risk_score": 0.22, "hops": 2 },11 { "service": "user-db", "risk_score": 0.90, "hops": 2 },12 { "service": "audit-log", "risk_score": 0.75, "hops": 3 }13 ],14 "total_reachable": 6,15 "max_hops": 3,16 "critical_services": ["user-db", "audit-log"]17 }18}
Blast Radius
Blast Radius — один из ключевых инструментов модуля Forensics. Если агент X скомпрометирован, Blast Radius показывает, какие сервисы достижимы через сетевой граф от этого агента.
Алгоритм выполняет BFS (breadth-first search) от целевого агента по рёбрам графа. Для каждого достижимого узла рассчитывается: расстояние в хопах, risk score, критичность сервиса.
⚠️ Сценарий инцидента
1. Flowlink обнаруживает аномальную активность на agent-a1b2c3 (billing-api)
2. Forensics автоматически запускает Blast Radius анализ
3. Результат: 6 достижимых сервисов, 2 критических (user-db, audit-log)
4. Flowlink предлагает: изолировать agent-a1b2c3, уведомить payments-team
5. Инцидент фиксируется в audit trail с полной картой blast radius
1# Запуск blast radius через CLI2flowlink-relay infra blast-radius --agent agent-a1b2c3 --max-hops 334# Через API5curl "https://flowlink.flow-masters.ru/api/v1/infra/blast-radius/agent-a1b2c3" \6 -H "Authorization: Bearer $TOKEN"
Интеграции
Infrastructure Map — центральный компонент, который обогащает данные других модулей FlowLink.
Service Catalog
Карта обогащается метаданными из Service Catalog: owner, environment, criticality, approval policies. В обратную сторону — карта предоставляет топологию для dep graph визуализации в каталоге.
Forensics
Blast Radius API — основа для анализа компрометации. Forensics использует граф для определения зоны поражения, идентификации критичных сервисов в радиусе и генерации рекомендаций по изоляции.
Change Management
Перед выполнением операции (restart, deploy, config change) система проверяет impact через граф: сколько сервисов затронуто, какие из них критичные. Для критичных — требует дополнительного одобрения.
GitOps
При деплое через GitOps pipeline, карта обновляется автоматически: новые узлы добавляются, устаревшие помечаются. Поддерживается drift detection — расхождение междуожидаемой и фактической топологией.
Безопасность
✓Секреты в карте — только имена и типы, без значений
✓API доступен только членам организации с appropriate RBAC permissions
✓Все запросы к карте логируются в audit trail
✓Агент не может "гулять" по чужой инфраструктуре — scope = org
✓Blast radius запросы дополнительно логируются и требуют elevated permissions