Compliancerapport
Het compliancerapport beantwoordt de vragen die een auditor stelt over kwetsbaarheidsbeheer: wat openstond, wat is opgelost en hoe snel, of de fixes binnen je hersteltermijnen per ernst bleven, welke risico’s zijn geaccepteerd en door wie, en welk beleid gold. Je kiest de periode en, als je wilt, één repository.
Je vindt het onder Beveiliging › Rapporten › Compliancerapport
(/<org>/_admin/security/reports/compliance). Eigenaren van de organisatie en
leden van het team Auditors van de organisatie kunnen het openen en downloaden.
Wat het bevat
| Sectie | Wat ze toont |
|---|---|
| Openstaande bevindingen | Bevindingen die aan het eind van de periode openstaan, per type en ernst. Types: afhankelijkheden, containerimages (ook images die via de dependency proxy zijn opgehaald), IaC, licenties, SAST, secrets, malware en registry-pakketten. Genegeerde en opgeloste bevindingen tellen niet mee. |
| Herstel | Per ernst: bevindingen die in de periode zijn geopend, opgelost en genegeerd, de gemiddelde tijd van openen tot oplossen, en de naleving van de hersteltermijn. Per type: geopend, opgelost, genegeerd, de gemiddelde hersteltijd en nog openstaand. Daarna de tijd tot samenvoegen van de pull requests met beveiligingsfixes die in de periode zijn samengevoegd (mediaan in uren, per bron); dit cijfer gaat over de hele organisatie en ontbreekt daarom in een rapport voor één repository. De pagina Herstelstatistieken definieert geopend, opgelost en tijd tot samenvoegen. |
| Overschrijdingen van de hersteltermijn | Bevindingen van elk type waarvan de deadline in de periode verliep terwijl ze nog openstonden, naast de gebeurtenissen code-security.sla.breached die voor afhankelijkheidsbevindingen zijn vastgelegd (de gebeurtenissen die naar je SIEM gaan). |
| Geldende uitzonderingen | Goedgekeurde uitzonderingen die aan het eind van de periode gelden, met wie elke uitzondering heeft aangevraagd en goedgekeurd en wanneer ze verloopt. Een uitzondering die later is ingetrokken of verlopen, staat er nog in als ze toen gold. |
| Meest risicovolle componenten | Tot 20 componenten, gerangschikt naar een op ernst gewogen aantal van hun openstaande advisories (kritiek 10, hoog 5, gemiddeld 2, laag 1). Uit de componenteninventaris. |
| Beleidsinstellingen | De instellingen die gelden wanneer het rapport wordt gemaakt: dagen per hersteltermijn, scanbeleid en drempels per scanner, het licentiebeleid met zijn lijsten voor weigeren, waarschuwen en toestaan, het pakketbeleid met zijn lijsten voor weigeren en toestaan, de modus voor modelscanning en de instellingen voor uitzonderingen. |
| Geschiedenis van bevindingen | Elke bevinding die ergens in de periode openstond, met wanneer ze is geopend, opgelost of genegeerd, en de stand van haar hersteltermijn. Alleen in de CSV. |
| AI-inventaris | De modelbestanden die je organisatie heeft wanneer het rapport wordt gemaakt: hoeveel, hoeveel je beleid voor modelscanning blokkeert of zou blokkeren, hoeveel een genegeerde bevinding hebben, je modus voor modelscanning, de modeldownloads in CI zonder vaste revisie, en de bestanden per opgegeven licentie. Altijd voor de hele organisatie. De CSV bevat elk modelbestand. |
| IaC per benchmark en NIS2-gebied | De openstaande IaC-bevindingen wanneer het rapport wordt gemaakt, gegroepeerd naar de benchmarkcontroles die hun checks testen en naar NIS2-gebied; zie hieronder. Voor de repository als je er een kiest. |
De ernstniveaus volgen het beveiligingsoverzicht: SAST error telt als hoog en
warning als gemiddeld; een verboden licentie telt als kritiek en een beperkte
als hoog; secrets en malware zijn kritiek.
Naleving van de hersteltermijn voor een ernstniveau is het aantal bevindingen dat binnen de termijn is opgelost, gedeeld door de bevindingen die binnen de termijn zijn opgelost, die erna zijn opgelost en die aan het eind van de periode na de termijn nog openstaan. Een ernstniveau zonder hersteltermijn heeft geen nalevingscijfer.
Bevindingen die niet bereikbaar zijn. Als je organisatie de
SLA-vermenigvuldiger
heeft aangezet, gebruikt elk cijfer over de hersteltermijn (naleving,
overschrijdingen in de periode en de deadline van elke bevinding) dezelfde
deadline als de SLA-labels, de samenvatting en de SIEM-gebeurtenissen voor
overschrijdingen: een bevinding in een afhankelijkheid of image wordt alleen
aan de verlengde termijn gemeten als elke huidige rij ervan het oordeel
Niet bereikbaar heeft, en nooit als haar EPSS misbruik waarschijnlijk maakt.
Waar de verlengde termijn afwijkt van de termijn uit het beleid, toont het
rapport beide: “30, 60 if no call path” en hoeveel bevindingen aan de verlengde
termijn zijn gemeten. De CSV en JSON bevatten per bevinding sla_days (de
gebruikte deadline), policy_sla_days, policy_sla_due_at en sla_multiplier,
en per ernstniveau unreachable_sla_days en stretched_sla_findings. Met de
vermenigvuldiger op 1 verandert er niets.
Bevindingen in registry-pakketten verschijnen alleen voor een organisatie waarvan de pipeline voor pakketbeleid aanstaat. Anders laat het rapport ze weg en vermeldt het dat; je eigen pakketbeleid en de uitzonderingen daarop staan er wel in.
IaC per benchmark en NIS2-gebied
Per benchmark. Eén rij per benchmark: hoeveel van de controles een openstaande bevinding hebben, hoeveel van de controles de checks van fremforge testen, de openstaande bevindingen, en de ID’s van de controles met bevindingen. De koppelingen zijn de eigen compliancespecificaties van Trivy (MIT), in de versie die de scanners draaien, voor negen benchmarks: CIS Docker 1.6.0, CIS Kubernetes 1.23, RKE2 CIS 1.24, EKS CIS 1.4, de NSA Kubernetes hardening guide 1.0, Pod Security Standards baseline en restricted, en CIS AWS 1.2 en 1.4. Alleen controle-ID’s, ernstniveaus en de checks die ze testen worden opgenomen; de tekst van de benchmark wordt niet overgenomen (CIS publiceert die onder een eigen licentie), en de naam van elke benchmark linkt naar de gepubliceerde specificatie. Er is geen benchmark voor Azure of Google Cloud: Trivy publiceert voor geen van beide een koppeling.
Per NIS2-gebied. Dezelfde bevindingen, ingedeeld naar de maatregel uit NIS2 artikel 21, lid 2, waarop elke check betrekking heeft: (b) incidentenbehandeling, (c) bedrijfscontinuïteit, (e) veilige configuratie, (h) cryptografie en versleuteling, (i) toegangsbeheer. Deze indeling is van fremforge zelf, gemaakt op basis van de titel van elke check, omdat er geen open koppeling van deze checks naar NIS2 bestaat. Het is geen officiële koppeling en ze zegt niets over naleving van een maatregel.
De eigen checks van je organisatie tellen onder NIS2-gebied (e), tenzij hun titel een van de andere gebieden noemt; ze horen bij geen enkele benchmarkcontrole. Zonder openstaande IaC-bevindingen meldt de sectie dat in één regel.
Formaten
- Pdf-samenvatting: elke sectie samengevat op een paar A4-pagina’s, in de taal van je console (Engels, Deens, Duits, Frans, Nederlands, Noors of Zweeds).
- CSV: één bestand per sectie (
open,remediation,sla,exceptions,components,policy,findings,ai_inventory,iac_compliance), elk volledig, met vaste Engelse kolomnamen, voor een spreadsheet of een script.iac_complianceheeft één rij per benchmarkcontrole met bevindingen en één per NIS2-gebied:grouping,framework,version,control,severity,checks(de ID’s van de checks, gescheiden door spaties) enopen_findings.
Elke download wordt vastgelegd in het auditlog als
compliance.security_report.generated.
De periode
Hele dagen in UTC, beide grenzen inbegrepen, hoogstens 366 dagen. Standaard zijn dat de afgelopen 30 dagen. Een bevinding die om 00:00:00 op de eerste dag is geopend of om 23:59:59 op de laatste dag is opgelost, valt binnen de periode.
Waar de geschiedenis vandaan komt
De meeste scanners vervangen hun bevindingen bij elke scan, dus uit de tabellen van de scanners alleen valt niet af te lezen wanneer iets is opgelost. fremforge legt daarom de levenscyclus van elke bevinding (geopend, opgelost, genegeerd) één keer per dag vast voor elke organisatie, en opnieuw telkens als er een rapport wordt gemaakt. Het rapport leest die vastlegging, en de laatste sectie, Over de geschiedenis, vermeldt wat ze wel en niet kan laten zien:
- De geschiedenis begint op de datum waarop de vastlegging voor je organisatie is gestart. Een fix van vóór die datum telt alleen mee waar de scanner de bevinding heeft bewaard (hij markeert bevindingen die een latere scan niet meer meldt, en bevindingen over kwaadaardige pakketten en registry-pakketten houden hun eigen datum van oplossing bij). Voor een bevinding die al openstond, is de openingsdatum die welke de scanner heeft vastgelegd.
- Hersteltijden kloppen tot op het uur of tot op een dag. Waar de scanner de fix heeft gemarkeerd, wordt dat tijdstip gebruikt. Waar een bevinding gewoon is verdwenen, wordt de fix vastgelegd op het moment dat de dagelijkse vastlegging, of een rapport, haar voor het eerst niet meer vindt.
- Bevindingen van een verwijderde, hernoemde of overgedragen repository tellen als opgelost op de dag dat ze worden verwijderd: na de hersteltermijn van 30 dagen voor een verwijderde repository, of zodra de oude naam niet meer bestaat voor een repository die direct is verwijderd, hernoemd of overgedragen. Zie Bewaring van bewijs.
- SAST-bevindingen die al openstonden voordat de vastlegging begon, hebben hun laatste scan als openingsdatum, omdat de SAST-scanner geen datum van eerste waarneming bijhoudt.
- Negeringen worden getoond zoals ze nu zijn; een negering die later is opgeheven, staat niet in het rapport.
Via de REST API
GET /_app/api/v1/orgs/{org}/security/compliance-report
?from=2026-09-01&to=2026-09-30
&repo=web optional, a repository of the org
&format=json | pdf | csv default json
§ion=open|remediation|sla|exceptions|components|policy|findings|ai_inventory|iac_compliance with format=csv
&lang=en|da|de|fr|nl|sv PDF language; else Accept-Language, else EnglishVereist een token met findings:read. De JSON is het volledige rapport, inclusief
history.notes. Voorbeeld:
curl -H "Authorization: Bearer ${FREMFORGE_TOKEN}" \
"https://frem.sh/_app/api/v1/orgs/acme/security/compliance-report?from=2026-07-01&to=2026-09-30&format=pdf&lang=da" \
-o compliance-report.pdfBij de wekelijkse samenvatting voegen
Een eigenaar van de organisatie kan de pdf bij de beveiligingssamenvatting voegen: vink onderaan de rapportpagina Dit rapport als pdf bij de beveiligingssamenvatting voegen aan. Dit staat standaard uit. Het bijgevoegde rapport beslaat de eigen periode van de samenvatting (7 dagen, of 1 dag voor een dagelijks abonnement) en is in de taal van elke ontvanger.
Via de API: PUT /_app/api/v1/orgs/{org}/security/compliance-report/settings
met {"digest_attachment": true} (policy:write); lees de instelling met GET
op hetzelfde pad (policy:read).