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

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-сканирования, которое выполняет каждый агент. Процесс полностью автоматический и не требует ручной конфигурации.

1

Дискавери агента

Агент сканирует хост: процессы, Docker-контейнеры, прослушиваемые порты, активные сетевые соединения, переменные окружения, конфигурационные файлы.

2

Отправка в relay

Каждый агент формирует InfrastructureSnapshot — набор узлов (nodes) и рёбер (edges) — и отправляет на relay по зашифрованному каналу.

3

Графовый движок

Relay передаёт снапшоты в графовый движок, который объединяет данные от всех агентов в единую топологию. Дедупликация узлов по fingerprint (host + port + service name).

4

Мерж с Service Catalog

Граф обогащается данными из Service Catalog: owner, environment, criticality level, approval policies,теги.

5

Расчёт 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

Полный граф инфраструктуры: все узлы и рёбра.

json
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.85
21 }
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": true
31 },
32 {
33 "source": "billing-api",
34 "target": "notification-api",
35 "type": "DEPENDS_ON",
36 "protocol": "http",
37 "risk_score": 0.08,
38 "encrypted": false
39 }
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}

Локальная карта конкретного агента — только те узлы и рёбра, которые видны этому агенту.

bash
1curl "https://flowlink.flow-masters.ru/api/v1/infra/map/agent-a1b2c3" \
2 -H "Authorization: Bearer $TOKEN"

GET /api/v1/infra/dependencies/{service_name}

Обратные зависимости — какие сервисы зависят от указанного. Полезно перед рестартом или деплоем.

json
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": 3
24}

GET /api/v1/infra/blast-radius/{agent_id}

Blast radius — какие сервисы достижимы от этого агента через сетевой граф. Ключевой endpoint для Forensics.

json
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

bash
1# Запуск blast radius через CLI
2flowlink-relay infra blast-radius --agent agent-a1b2c3 --max-hops 3
3
4# Через API
5curl "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

Edit this page