Ga naar inhoud

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

WorkerCadenceIdempotent?
CapacityPredictorWorker1 uja — UPSERT op (tenant, agent, kind, subject)
LateralMovementWorker60 sdedup-venster 24 u per (hp_agent, ssh_agent)
ComplianceErosionWorker24 usnapshot append-only; alert dedup 7 d
CentralityRefreshWorker1 uvolledige overwrite per tenant

Alle workers cold-starten met 2-5 min delay zodat de hub kan afmaken booten voor de eerste zware queries vuren.