SMART correlaties — pijplijnen verbinden
De hub draait ~15 onafhankelijke pijplijnen (alerts, CVE matching, kernel tracker, honeypot, integrity, detection rules, capacity, mTLS, …). Elke pijplijn op zich is nuttig; de verbanden ertussen zijn waar de waarde echt zit.
Geshipt (mig 106 + mig 107)
1. Blast-radius CVE prioritering
GET /api/v1/topology/exposure?map_id=...
Recursive BFS over topology_edges vanaf elke internet-facing node
(node_type in {isp_uplink, cdn, load_balancer, waf} of tag
public-facing). Per node: hop-afstand tot de dichtstbijzijnde
internet-ingang. /recommendations re-rankt CVEs op die basis.
GET /api/v1/topology/node-impact/:node_id → lijst compliance
controls die van deze node afhangen, met live evidence-tellingen.
2. Capacity-als-CVE
CapacityPredictorWorker (1 u cadence) fit een linear regression
(Postgres regr_slope + regr_intercept + regr_r2) over de
laatste 30 d disk metrics per (agent, mount_point); cert-expiries
binnen 60 d; EOL-data binnen 180 d. Emit predicted_capacity_findings
die /recommendations verbruikt als capacity.disk_full / cert_expiry / eol_date.
3. Lateral-movement detectie
LateralMovementWorker (60 s cadence) JOINt honeypot_events × auth_events voor honeypot-trip + succesvolle SSH vanuit interne IP
binnen ±5 min. Genereert detected_events rule_kind=lateral_movement_suspected (MITRE T1021 + T1078) met de
volledige link tussen beide events.
4. Compliance-erosion alerts
ComplianceErosionWorker (dagelijks) snapshot elke control z’n
evidence-count in compliance_evidence_history. Wanneer een control
50 % evidence verliest t.o.v. de snapshot van 7 dagen geleden, wordt een alert geraised in
category='compliance.erosion'. Vangt stille-stop-workers, key-rotation regressies, accidentele deletes.
5. Owner-of-the-week rapport
GET /api/v1/reports/owner-workload?window=7d
Aggregaat per topology_nodes.owner_email — open alerts / CVEs /
detections / capacity findings. Nuttig voor MSPs en team leads om te
zien wie kopje onder gaat. window accepteert 24h | 7d | 30d | 90d.
6. False-positive learning
GET /api/v1/detection/rules/flake-stats
Per detection rule: fires_30d, quick_ack_30d (geackt binnen <5 min), flake_rate. Bij >50 % flake en ≥10 fires wordt een opinion-suggestie gegeven (bv. “verhoog threshold van 10 naar 25”). Operator-gestuurd, geen auto-tuning.
7. Centrality-gewogen Trust Score
CentralityRefreshWorker (uurlijks) loopt elke tenant’s topology
graph en berekent betweenness centrality (Brandes). Gecached in
topology_node_centrality. De tenant-aggregate Trust Score weegt
elke agent’s score met (1 + centrality), zodat een chokepoint-node
tot 2× zo zwaar telt als een leaf-node. SPOF-druk staat nu in één
getal.
8. AI Explain → linked actions
ai_explain_grounding.action_hints JSONB kolom. Per grounding-rij
krijgt de operator één-klik knoppen in de explain modal — open de
relevante dashboard view, of spring meteen in de emergency console
voor-gevuld met de juiste EAT-kind. {agent_id} placeholders worden
client-side gesubstitueerd. Seed voorbeelden:
- CVE (applicatie) → Open recommendations · Open application CVE list
- Kernel-CVE → Open kernel-CVE pipeline · Schedule kernel update batch
- PinTheft detectie → Trigger pintheft_mitigate EAT
- Brute-force detectie → IsolateNetwork EAT
- mTLS CN mismatch → Roteer agent token · Reissue cert
9. Time-machine diff
GET /api/v1/time-machine/diff?agent_id=&from=&to=
Pairwise diff tussen de twee inventory_snapshots dichtst bij de
from / to timestamps. Geeft packages toegevoegd / verwijderd /
geüpgraded, services toegevoegd / verwijderd, kernel / hostname /
os deltas. Eén call = de “wat veranderde tussen Ma en Vr” forensische
timeline.
Operationele notities
| Worker | Cadence | Idempotent? |
|---|---|---|
CapacityPredictorWorker | 1 u | ja — UPSERT op (tenant, agent, kind, subject) |
LateralMovementWorker | 60 s | dedup-venster 24 u per (hp_agent, ssh_agent) |
ComplianceErosionWorker | 24 u | snapshot append-only; alert dedup 7 d |
CentralityRefreshWorker | 1 u | volledige overwrite per tenant |
Alle workers cold-starten met 2-5 min delay zodat de hub kan afmaken booten voor de eerste zware queries vuren.