Ga naar inhoud

Report Builder

De Report Builder maakt custom evidence packs bovenop dezelfde infrastructuur als de maandelijkse Audit Pack: JSONL.gz + PDF + .sig, Ed25519-signed met dezelfde hash-chain. Verschil: jij kiest template, scope en datumvenster.

In het dashboard

  1. Sidebar → Reports (onder MANAGE)
  2. Stap 1: kies één van 5 templates (cards):
    • Executive samenvatting (1-2p) — CISO/board view met Trust Score chart
    • Technische audit (12-20p) — voor NIS2/CRA auditor
    • Per applicatie (4-6p) — deep-dive één app: SLA + CVEs + EATs
    • Per groep (6-10p) — alle hosts in één groep met aggregate
    • MSP handover (4-8p) — wat heeft jouw MSP-team gedaan in een tenant
  3. Stap 2: vul scope + datums:
    • Titel (optioneel, free text)
    • Datumvenster (default laatste 30 dagen, max 365)
    • Scope-velden verschijnen automatisch op basis van template:
      • tags (comma-separated)
      • group_id (UUID uit /groups)
      • app_id (UUID uit /apps)
      • msp_actor (email-domein, voor msp_handover)
      • agent_ids (comma-separated, voor specifieke hosts)
  4. Klik Genereer rapport → async job start
  5. Wacht 10-60 s (afhankelijk van venster). Verschijnt onder Mijn rapporten met status “klaar”
  6. Download: PDF / JSONL.gz / .sig knoppen per rij

Wat erin zit per template

TemplateInhoud
executiveTrust Score 30d trend chart, 3 KPI tiles (score / open critical / kernel CVEs), top 5 recente critical incidents, 1-2p totaal
technical_auditCover + Trust Score chart + Hosts in scope tabel + EATs + alerts + CVEs + kernel currency + verify-appendix (8 secties)
per_applicationCover + app-metadata + SLA uptime sectie + restart-EATs voor deze app + dependencies + recent state changes
per_groupCover + alle hosts in groep + per-host alert/EAT samenvatting + aggregate Trust Score breakdown
msp_handoverCover + alle acties uitgevoerd door MSP-team (filtered op actor email-domein) — “wat hebben wij deze maand gedaan”

Alle templates hebben een verify-appendix met manifest_hash + Ed25519 signature + verify-CLI commando. Offline-verifieerbaar door externe auditor met monsys-verify-eat-linux-x64 verify-pack.

Wie kan wat

RolMag genererenTemplates beschikbaar
Viewerenkel executivedownloads van eigen reports
Editorexecutive, technical_audit, per_application, per_groupalle scopes (tag/group/app/agents)
Adminalle 5 templates incl. msp_handoveralle scopes

Charts in PDF

Geen externe lib, geen headless browser. We tekenen direct met gofpdf-primitives:

  • Line chart: Trust Score 30d trend, met y-as ticks (0/50/100) en datum-labels op x-as
  • Bar chart: alert volume per dag (toekomstig — komt in v1.1)

Pixel-grid styling: 1px lines, monospace ticks, geen gridlines behalve midden. Past in de bestaande branding.

Cryptografische pijplijn

Identiek aan de maandelijkse Audit Pack:

  1. Worker streamt evidence-rows naar <base>.jsonl.gz, met hash-chain over elke regel via sha256
  2. Manifest JSON met hash_chain_root + counts + range + scope
  3. manifest_hash = sha256(manifest_json)
  4. Ed25519 sign met MONSYS_HUB_SIGNING_KEY_HEX<base>.sig
  5. PDF rendered met dezelfde data + verify-appendix dat de hash-chain uitlegt

Filename pattern: <template_kind>-<8-char-id>.jsonl.gz/.pdf/.sig. On-demand rapporten en de maandelijkse 2026-04.* set leven naast elkaar in /var/lib/monsys/audit-packs/<tenant_id>/.

Storage retention

Rapporten worden niet automatisch verwijderd. De maandelijkse Audit Pack houdt minstens 12 maanden (per NIS2 Art21 §2(c) interpretatie). On-demand rapporten blijven tot manueel verwijderd. Voor disk-management:

-- Vind ongebruikte on-demand rapporten ouder dan 90 dagen
SELECT id, template_kind, title, created_at
FROM audit_packs
WHERE tenant_id = $1::UUID
AND template_kind <> 'monthly_full'
AND created_at < NOW() - INTERVAL '90 days'
ORDER BY created_at;

Of via API (geavanceerd — voor automatisering)

Terminal window
# 1. Lijst beschikbare templates
curl https://app.monsys.ai/api/v1/reports/templates \
-H "Authorization: Bearer $TOKEN"
# 2. Genereer een per-app rapport (async)
curl -X POST https://app.monsys.ai/api/v1/reports/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"template_kind": "per_application",
"title": "Q1 2026 review — checkout-api",
"range_start": "2026-01-01",
"range_end": "2026-03-31",
"scope_filter": {"app_id": "<uuid>"}
}'
# returnt: {"id":"<report-id>","status":"generating"}
# 3. Poll status
curl https://app.monsys.ai/api/v1/reports/<id> \
-H "Authorization: Bearer $TOKEN"
# 4. Download wanneer status=ready
curl -L https://app.monsys.ai/api/v1/reports/<id>/download?format=pdf \
-H "Authorization: Bearer $TOKEN" -o report.pdf
curl -L https://app.monsys.ai/api/v1/reports/<id>/download?format=sig \
-H "Authorization: Bearer $TOKEN" -o report.sig

Maandelijkse Audit Pack vs Report Builder

AspectMonthly Audit PackReport Builder
TriggerAuto, 1e van maand 02:00 UTCOperator klikt “Genereer”
ScopeVolledige tenantTenant / group / app / tag / agents / actor
PeriodeVorige kalendermaandCustom (max 365 dagen)
Templates1 (full audit)5
ChartsNeeJa (Trust Score trend)
DoelgroepNIS2-auditor jaarlijks/kwartaalrapportAd-hoc CISO briefing / per-app review / MSP cliënt-handover

Geen vervanging — aanvulling. De maandelijkse pack blijft de “compliance-baseline”; de Report Builder is voor de momenten dat je géén kalendermaand-rapport wil maar een specifieke vraag wil beantwoorden met audit-grade evidence.

Wat NIET op deze pagina hoort

  • Monthly Audit Pack (auto-gegenereerd) → zie Monthly Audit Pack
  • Transparency log (signed log van élke EAT) → zie Transparency log
  • Auditor workbench (read-only login voor externe auditor) → zie Auditor