feat(openkat): het echte exportformaat, als Uitbreiding met een vaste rapportagemap #789
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!789
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/openkat-uitbreiding-integraties"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Sluit het gat tussen wat de OpenKAT-import beloofde en wat hij deed, en zet hem op de plek waar hij hoort.
De import las het verkeerde formaat
De importlaag was geschreven zonder een echte export bij de hand: hij zocht
systemsenfindingsnáást elkaar op het hoogste niveau. Zo ziet geen enkele OpenKAT-export eruit. Getoetst tegen zes echte exports kwam er een leeg deck uit — de bestanden werden wél "herkend", maar leverden nul systemen en nul bevindingen.Elke export heeft één envelop (
{organization_code, organization_name, organization_tags, data}); het verschil zit indata: een vlakke samenvatting van de hele organisatie, of gesleuteld op rapporttype en daarbinnen op object. Beide worden nu gelezen. Wat daarbij aan het licht kwam:findings-report— die is in echte exports leeg. Vier van de zes bestanden hadden anders nul bevindingen opgeleverd terwijl er 284 in zaten.OpenKatControlScore.ratioper definitie null was en de aggregator geen trend kón berekenen.DateTime.now(). De trendlijn werd zo een grafiek van het aantal keren dat je op Importeren drukte.<organisatie>_20260319200604.json— veertien cijfers zonder scheidingstekens).nameis geregeld null in echte exports; dat gaf "null" op de dia.En de plek waar het hoort
Vierde optionele module, standaard uit, plus een nieuw tabblad Integraties met de rapportagemap. De import gebruikt die map rechtstreeks in plaats van er elke keer om te vragen. Reveal = module aan óf map aangewezen, zodat uitzetten een bestaand OpenKAT-deck niet onbijwerkbaar maakt.
Verantwoording
part— de scheiding die #631 voor deze dialoog wilde._xxx()-bouwers als tabbladinhoud; een tabblad dat door een losse widget wordt gerenderd viel stil buiten de telling. Nu herkent hij beide vormen.make checkgroen: 6196 toetsen, dekking 86,4%.Openstaand
Deze PR bouwt op het formaat van de exports die nu voorhanden zijn (maart en 11 juli). Is er ná die bestanden nog iets aan het formaat gewijzigd, dan heb ik dat niet kunnen zien — de aangehaalde
brenno/Keikobeschrijft presentatie-import (.pptx/.odp/.key) en bevat niets over OpenKAT-JSON.Raakt #767 en de OpenKAT-helft van #772.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Generated with Claude Code
De importlaag was geschreven zonder een echte export bij de hand. Hij zocht `systems` en `findings` náást elkaar op het hoogste niveau; zo ziet geen enkele OpenKAT-export eruit. Getoetst tegen zes echte exports kwam er dus een leeg deck uit: de bestanden werden wél "herkend", maar leverden nul systemen en nul bevindingen. Elke export heeft één envelop — `{organization_code, organization_name, organization_tags, data}` — en het verschil zit uitsluitend in `data`: * **organisatierapport**: één vlakke samenvatting (`systems`, `findings`, `basic_security`, `total_*`); * **assetrapporten**: gesleuteld op rapporttype en daarbinnen op OOI, met per OOI een blok `{data, template, report_name, …, created_at}`. De twee speculatieve adapters zijn vervangen door adapters tegen die twee vormen. Wat daarbij aan het licht kwam en is rechtgezet: - **Bevindingen zitten in de deelrapporten**, niet in `findings-report` — die is in echte exports leeg. Vier van de zes bestanden hadden anders nul bevindingen opgeleverd terwijl er 284 in zaten. - **De noemer ging verloren.** `controlScores` gaf alleen het aantal conforme systemen, waardoor `OpenKatControlScore.ratio` per definitie null was en de aggregator geen enkele trend kón berekenen. OpenKAT levert de noemer gewoon mee (`number_of_ips` naast `number_of_compliant`). - **De datumstempel werd niet gelezen.** OpenKAT exporteert als `<organisatie>_20260319200604.json`; de uitdrukking eiste scheidingstekens en liet juist die vorm liggen. - **Herimport was niet reproduceerbaar.** Het organisatierapport draagt zelf geen datum en viel terug op `DateTime.now()` — elke herimport gaf een nieuwe momentopname, en de trendlijn werd een grafiek van het aantal keren dat je op Importeren drukte. Nu de wijzigingsdatum van het bestand. - **`name` is in echte exports geregeld null** (KAT-NO-SECURITY-TXT); dat gaf "null" op de dia. Nu valt hij terug op de id. 15 nieuwe toetsen over beide vormen; de bestaande toetsen draaien nu op de echte envelop in plaats van op een verzonnen indeling. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>