CSIR Assessment Tool
De Cybersecurity Implementatierichtlijn Objecten (CSIR) toegepast op één object met industriële automatisering: een tunnel, gemaal, brug, sluis, verkeersinstallatie of vergelijkbaar areaal.
Drie stappen achter elkaar. Je classificeert het object langs zes gevolgcriteria; daaruit volgen de functiebox en het weerstandsniveau. Je bepaalt welke van de 127 controls je van toepassing verklaart en welke van de 268 maatregelen op dat niveau gelden. Je werkt ze uit tot een dossier met status, bewijs, verantwoordelijke en onderbouwde afwijkingen. De eisteksten zijn woordelijk uit de CSIR overgenomen, zodat je ze rechtstreeks in een vraagspecificatie of contract kunt gebruiken.
Het kan online in je browser of in Excel. De browserversie rekent lokaal: er is geen server, geen account en geen telemetrie, en je dossier verlaat je eigen apparaat niet.
Status: prototype. Werkt en is te gebruiken; geen belofte over onderhoud.
Voor wie
CISO's, ISO's, objectbeheerders en projectleiders bij publieke organisaties die objecten met industriële automatisering (IA/PA/OT) beheren. Ook bruikbaar als eisenbron bij een aanbesteding of een contract met een leverancier.
Snel starten
- Open de CSIR Assessment Tool in je browser.
- Classificeren. Scoor de zes gevolgcriteria van 1 tot 5 en onderbouw elke score. De functiebox (A–E) en het weerstandsniveau (1–4) rollen eruit. Bedient dit object andere objecten, dan gaat het niveau mee omhoog met het zwaarste object dat het aanstuurt.
- Bepalen. Loop de 127 controls langs en verklaar per control Van toepassing. Ze staan voorgevuld op "Ja"; zet ze op Nee of N.v.t. waar het risico buiten de scope van de opdracht valt en onderbouw dat. Op het maatregelenblad zie je direct wat daarmee in scope komt.
- Uitwerken. Houd per maatregel de status en het bewijs bij. Per paragraaf staan de handleidingen uit de kennisbank erbij: de richtlijn zegt wat er moet gelden, die zeggen hoe je het inricht.
- Uitdraai. Het laatste tabblad zet alles op een rij in de volgorde waarin het in het Cybersecurity Dossier hoort, met de afwijkingen apart. Sla je dossier op als bestand; het is een gewone JSON die je later weer inleest.
Liever Excel? Download het werkboek en het classificatieformulier. Beide rekenen hetzelfde. Het werkboek is een sjabloon: er staat geen object in, dus kopieer het per object.
De uitleg bij het werkboek staat op de uitlegpagina: de werkwijze stap voor stap en de verantwoording van elke kolom.
Bijdragen
Zie de CONTRIBUTING van de organisatie: daar staat per project een formulier, ook zonder Git-ervaring. Een issue of discussion is een volwaardige bijdrage.
Licentie
EUPL-1.2, zie LICENSE. Die licentie dekt wat in dit project zelf gemaakt is: de opzet van het werkboek, de formules, het dashboard, de webversie en de documentatie.
De eisteksten zelf vallen daar niet onder. De controls en maatregelen zijn woordelijk overgenomen uit de Cybersecurity Implementatierichtlijn Objecten, uitgegeven door Rijkswaterstaat en Het Waterschapshuis. Het auteursrecht daarop ligt bij hen. Gebruik dit register zoals je de CSIR zelf zou gebruiken.
Wat erin zit
| Onderdeel | Inhoud |
|---|---|
| Classificeren | Zes gevolgcriteria (veiligheid, maatschappij, financieel, cascade, ecologie, imago), elk met vijf drempels; onderbouwing per criterium |
| Niveau | Functiebox, keten-analyse (CSIR §0.3), berekend weerstandsniveau |
| Dashboard | Live tellers: voortgang per onderdeel en per maatregelparagraaf, in en uit scope |
| VSP Proceseisen | 89 proces-controls, met de BIO-bron erbij |
| VSE Systeemeisen | 38 systeem-controls |
| Maatregelen | Alle 268 maatregelen met de niveaus N1–N4, de scope en de handleidingen per paragraaf |
| Bijlagen | CSR 1–24 plus A, B en C |
| Uitdraai | Het hele dossier op een rij, met de afwijkingen apart; afdrukbaar op A4 |
In cijfers: 127 controls (89 + 38), 268 maatregelen en 27 bijlagen. Per weerstandsniveau gelden 193, 198, 230 en 234 maatregelen; een maatregel kan op meerdere niveaus gelden.
Hoe het rekent
- Gevolgscores naar functiebox. Het classificatieformulier neemt het afgeronde gemiddelde van de zes scores: 1=E, 2=D, 3=C, 4=B, 5=A. De browserversie toont daarnaast de strengste lezing (de hoogste score), omdat een gemiddelde een enkel zwaar gevolg kan wegmiddelen.
- Functiebox naar niveau. A=4, B=3, C=2, D=1, E=1. Dat niveau stuurt alle andere kolommen aan, dus één wijziging beweegt het hele register mee.
- Ketenregel. Bedient of beheert dit object andere objecten, dan gaat het niveau omhoog naar dat van het zwaarste bestuurde object. Dat is de regel uit §0.3 van de CSIR: het bedienende object gaat omhoog, niet het bediende.
- Van toepassing naar scope. De kolom Aangeroepen §2 op de controlbladen koppelt een control aan een maatregelparagraaf. Staat minstens één aanroepende control op "Ja", dan komt die paragraaf in scope. De koppeling loopt ook via de bovenliggende paragraaf: §2.5 dekt §2.5.1 tot en met §2.5.3.
- Twee percentages. % geïmplementeerd telt alleen wat af is; % afgehandeld telt ook de onderbouwde afwijkingen mee, omdat comply-or-explain in de CSIR een geldige eindtoestand is.
De opmaak (kleuren in koppen en accenten) is vrij aan te passen aan de eigen huisstijl.
Onder de motorkap
csir.json is de bron van de webversie: alle eisteksten, maatregelen, drempels en keuzelijsten, met
de sha256 van beide werkboeken erbij. Hij wordt gemaakt met register/haal_bron.py en een test
blokkeert als hij van de werkboeken afdrijft. De pagina zelf is één bestand met een
Content-Security-Policy die elke externe verbinding uitsluit; dat wordt in de tests nagerekend in
plaats van beloofd. Zie register/LEESMIJ.md voor bouwen, rekenen en testen.
Zo gebruik je het register
Het register maakt de vervolgstappen ná de objectclassificatie concreet en toetsbaar: van "wat schrijft de CSIR voor" naar "wat gaan wij voor dít object doen, op welk niveau, en waarom".
De vijf stappen
- Classificeren. Het object heeft een functiebox (A–E) uit de objectclassificatie. Die bepaalt het weerstandsniveau: A=4, B=3, C=2, D=1, E=1. Vul beide in op blad Instellingen. Heb je die classificatie nog niet gedaan, begin dan bij het classificatieformulier (zie hieronder); in de webversie is dat het eerste tabblad en stroomt de uitkomst vanzelf door.
- Baseline vaststellen. Loop de controls op VSP en VSE langs en verklaar ze van toepassing. Uitgangspunt is dat de volledige set geldt; wijk je af, dan doe je dat risicogestuurd en leg je dat vast.
- Maatregelen selecteren. Op het maatregelenblad toont de kolom Geldt (dit object) wat op het gekozen niveau geldt. In scope? (auto) combineert dat met je van-toepassing-keuzes.
- Verantwoorden. Houd per regel de status bij en leg bewijs vast. Afwijkingen krijgen status Explain (afwijking) met een onderbouwing.
- Vastleggen. De complete invulling en alle afwijkingen horen in het Cybersecurity Dossier / Beveiligingsplan (bijlage B), met een jaarlijkse toetsing volgens de PDCA-cyclus.
Stap 1 tot en met 3 en stap 5 zijn constant. Alleen de vertaalslag naar contracteisen hangt ervan af of je het werk uitbesteedt.
De classificatie ervoor
De functiebox komt niet uit dit register maar uit de objectclassificatie, en die is een stap op zich. Je beoordeelt het potentiële gevolg als het object faalt, uitvalt of niet beschikbaar is, langs zes criteria: veiligheid van medewerker en publiek, maatschappelijke gevolgen, financiële en herstelschade, cascade- en dominoeffecten, ecologische schade, en imago- en politieke schade. Elk criterium scoor je van 1 (klein) tot 5 (catastrofaal), met per stap een concrete drempel: minder dan duizend of meer dan vijfhonderdduizend getroffen personen, minder dan vijf ton of meer dan vijfhonderd miljoen euro schade, interne commotie of langdurig geen college.
Het formulier neemt daarvan het afgeronde gemiddelde en vertaalt dat naar de functiebox: 1=E, 2=D, 3=C, 4=B, 5=A. Dat gemiddelde heeft een prijs die je moet kennen: een enkel zwaar gevolg middelt weg. Een 5 op cascade tussen vijf enen komt uit op box D, terwijl datzelfde cascade-effect in de praktijk de reden is dat het object ertoe doet. De webversie zet daarom de strengste lezing ernaast, de hoogste score, zodat je ziet wat het verschil is voordat je hem vaststelt. Het formulier blijft leidend; wijk je ervan af, onderbouw dat dan bij de opmerkingen.
De onderbouwing is het product, niet het cijfer. Wat je later moet kunnen uitleggen aan een bestuurder, een auditor of een leverancier is waarom een gevolg zwaar of licht is ingeschat, niet welk getal eruit rolde. Vul daarom per criterium de onderbouwing in, ook als de score vanzelfsprekend lijkt.
De ketenregel
De CSIR stelt in §0.3: "Elke keten is zo sterk als de zwakste schakel. Indien de bediening of het beheer van object A wordt gedaan vanuit een initieel lager geclassificeerd object B, wordt de classificatie van dat object B verhoogd tot het cybersecurity weerstandsniveau van object A."
Het bedienende object gaat dus omhoog. Vul op Instellingen daarom de objecten in die vánuit dit object worden bediend of beheerd; het zwaarste daarvan bepaalt de ophoging. Wordt dit object juist zelf vanuit een ander object bediend, dan moet dát andere object omhoog — niet dit object. Een centrale bediening zit dus minimaal op het niveau van het zwaarste object dat zij aanstuurt.
Selectie op het maatregelenblad
Het blad toont alle 268 maatregelen. Wat op het gekozen niveau geldt staat in Geldt (dit object) op "Ja"; de overige regels staan grijs. Zo blijft de selectie zichtbaar meebewegen met het niveau zonder dat er iets verdwijnt.
Wil je alleen de geldende set zien, filter die kolom dan op "Ja". Let op: Excel past een bestaand filter niet vanzelf opnieuw toe. Na elke niveauwijziging moet je het filter herhalen, anders blijven rijen ten onrechte verborgen.
Wat er onder de motorkap gebeurt
- Namen.
Object,FunctieboxenNiveauzijn workbook-brede namen die naar Instellingen wijzen. Alle titels en formules gebruiken ze, dus het werkboek is object- en niveau-onafhankelijk. - Niveauselectie. Overal
CHOOSE(Niveau; N1; N2; N3; N4). Bij niveau 3 pakt elke formule automatisch kolom N3. - Scope-logica. Vier verborgen hulpkolommen tellen per maatregel hoeveel controls die paragraaf aanroepen, hoeveel daarvan op "Ja" staan en hoeveel er nog leeg zijn. Daaruit volgt In scope, Buiten scope, Nog te bepalen of Niet op dit niveau. De koppeling loopt ook via de bovenliggende paragraaf: een control die §2.5 aanroept dekt §2.5.1, §2.5.2 en §2.5.3.
- Celbeveiliging. Instellingen is beveiligd zonder wachtwoord; alleen de invoervelden zijn bewerkbaar en het berekende niveau is vergrendeld. Ontgrendelen kan via Controleren → Blad ontgrendelen. De overige bladen zijn vrij.
- Lege functiebox. Zolang die leeg is toont het niveauveld een waarschuwing en waarschuwen ook de koppen van Dashboard, VSP, VSE en Maatregelen. De onderliggende waarde is dan 1, zodat de formules blijven werken, maar dat is een voorlopige waarde en geen vastgesteld niveau.
De CSIR in een contract
De eisen horen bindend in het contract; de gestripte CSIR-variant voor aanbestedingen gaat mee als aangeroepen bijlage; het Cybersecurity Dossier is een op te leveren product.
In de vraagspecificatie:
- De van-toepassing-verklaarde controls, vertaald naar proces- en systeemtechnische eisen.
- Per eis de verwijzing uit de kolommen Aangeroepen §2 en Bijlage (CSR).
- Het vereiste weerstandsniveau expliciet benoemd; niveau 1 is de ondergrens.
- Comply-or-explain: afwijkingen onderbouwd en vastgelegd als non-compliancy (bijlage C).
- Auditrecht (control 15.1.2.6) en een verwerkersovereenkomst als de leverancier persoonsgegevens verwerkt (15.1.1.3 en 18.1.4).
- Medewerking aan risicogestuurd (pen)testen en aan de PDCA-cyclus (5.1.1.1).
- Einde-contractbepaling: objectinformatie overdragen én resterende data vernietigen (8.3.2.2, CSR 1, CSR 23).
- Maximale hardening door de leverancier van randapparatuur en datanetwerk (6.2.1.2).
Als op te leveren product: het Cybersecurity Dossier / Beveiligingsplan (bijlage B), en waar van toepassing een Recovery Plan (CSR 15), een CMDB (CSR 16), back-upmanagement (CSR 18) en een continuïteitsplan energievoorziening (CSR 12).
Let op bij de gestripte variant. Daarin ontbreekt het hoofdstuk met de controls. De controlnummers (5.1.1.1, 15.1.2.6 en zo verder) zijn daar dus niet terug te vinden. De §2- en CSR-verwijzingen zijn wél rechtstreeks bruikbaar. Dat is precies waarom de controls als eisen in de vraagspecificatie moeten landen.
Onderhoud
Register-versie, opsteller en datum staan in het metadatablok op Instellingen. Voor een nieuw object kopieer je het bestand en pas je alleen dat blad aan. Verschijnt er een nieuwe CSIR-versie, controleer dan of controls, maatregelen of niveaus zijn gewijzigd.
Waar de inhoud vandaan komt
Een register dat eisen uit een norm overneemt, is alleen bruikbaar als navolgbaar is wat brontekst is en wat eigen invulling. Deze pagina legt dat per kolom vast.
Bron
De inhoud komt uit de Cybersecurity Implementatierichtlijn Objecten (CSIR), versie 3.0, uitgegeven door Rijkswaterstaat en Het Waterschapshuis. Daarnaast bestaat een gestripte variant voor aanbestedingen, waarin het hoofdstuk met de controls ontbreekt.
Die twee zijn voor het maatregelenhoofdstuk identiek: dezelfde 268 maatregelen, dezelfde teksten, dezelfde paragraafnummers en dezelfde niveaumarkeringen, plus dezelfde bijlagen CSR 1–24 en A, B en C. Alle §2- en CSR-verwijzingen in dit register gelden dus in beide varianten. Alleen de controlnummers bestaan uitsluitend in de volledige versie.
Daarnaast hoort bij dit register het objectclassificatieformulier
(werkboek/objectclassificatie.xlsx), waaruit de functiebox volgt. De zes gevolgcriteria, hun uitleg,
de dertig drempelteksten en de tabel ernst → functiebox → weerstandsniveau zijn daaruit woordelijk
overgenomen. Het formulier komt uit de waterschapswereld; de keuzelijst met hoofdtaken is daarom in de
webversie aangevuld met gemeentelijke objecttypen (tunnel, gemaal, brug, sluis, verkeersregelinstallatie,
parkeergarage). Dat is de enige inhoudelijke toevoeging aan dat formulier.
Wat letterlijk is overgenomen
| Onderdeel | Aantal |
|---|---|
| Maatregelteksten | 268 |
| Control-eisen (kolom C op VSP en VSE) | 127 |
| Niveaumarkeringen N1–N4 | 268 × 4 |
| Paragraafnummers en BIO-bronnummers | alle |
| Groepskoppen van de fysieke-toegangsparagrafen | 65 |
| Bijlagenummering CSR 1–24 plus A, B en C | 27 |
| Functiebox-tabel en het ketenregel-citaat | — |
Elke tekst is met twee onafhankelijke extractiemethodes tegen de bron gelegd: één op basis van tekstcoördinaten, één op basis van vaste kolomposities. De niveaumarkeringen zijn op coördinaten uitgelezen, omdat de tabellen in de bron over pagina's heen verspringen; de uitkomsten zijn steekproefsgewijs visueel geverifieerd tegen de opgemaakte pagina's.
Wat eruit is afgeleid
- Thema — de paragraaftitels, herschreven tot korte labels.
- Aangeroepen §2 en Bijlage (CSR) — de verwijzingen die in de controltekst zelf staan, uitgelicht in een eigen kolom zodat je erop kunt filteren.
- Groep buiten de fysieke-toegangsparagrafen — spelling geharmoniseerd.
- Type op het bijlagenblad — "richtlijn" volgt uit de bron; bij twee bijlagen is "template" een eigen inschatting.
- Drie bijlagetitels zijn ingekort of uitgeschreven.
Wat eigen invulling is
De hele werkwijzelaag is van dit register en staat niet in de CSIR: de kolommen Van toepassing, Status, Invulling / bewijs, Verantwoordelijke en Comply-or-explain, de berekende kolommen Geldt (dit object) en In scope? (auto), het complete dashboard met alle tellers, de nummering in kolom A, en de kolom Korte omschrijving op de controlbladen. Die laatste is een navigatiehulp en draagt dat ook als kop: niet normatief. Neem hem nooit over in een contract; gebruik kolom C.
Bewuste afwijkingen van de letterlijke tekst
| Wat | Waarom |
|---|---|
Tme23 → TMe23 |
Typefout in de bron, in beide varianten |
Tweede MM1 → MP1 |
De bron gebruikt MM1 twee keer; de tweede staat in de groep "Procedures en Organisatie" en wordt gevolgd door MP2, MP3 en MP4 |
LM11 blijft LM11 |
Ook een bronafwijking van het patroon, maar ongemoeid gelaten omdat de code nergens botst |
| Eén maatregel noemt "CO3" waar CO4 logisch zou zijn | Letterlijk overgenomen |
| Twee maatregelen hebben identieke tekst op niveau 1 en 2 | Letterlijk overgenomen; ze zijn in de bron werkelijk gelijk |
| Eén control verwijst naar "paragraaf 2.42" | Letterlijk overgenomen; de gecorrigeerde verwijzing §2.4.2 staat in de kolom Aangeroepen §2 |
| Eén control eindigt met de ingevulde objectnaam | De bron heeft daar de placeholder "Lijst Objecten: xx – cybersecurity weerstandsniveau xx"; die xx-en zijn vervangen door de ingestelde waarden |
De bron is op één punt intern inconsistent: de functiebox-tabel in de inleiding laat de waarde bij E leeg, terwijl de tabel bij het maatregelenhoofdstuk E=1 geeft. Het register volgt het maatregelenhoofdstuk.
Grenzen van dit register
Het register dekt het strategische deel van een CSIR-implementatie: classificatie, weerstandsniveau, de bijbehorende maatregelenset en de verantwoording daarover. Het dekt het risicodeel niet.
Wie de CSIR op een bestaand object toepast, werkt risicogestuurd: per maatregel die niet voldoet een kans en een impact bepalen, daaruit een risicowaarde, en per risico een formele acceptatie of een mitigerende maatregel met kosten en doorlooptijd. Daar heeft dit werkboek geen kolommen voor. Het verschil zit in de meetlat: dit register meet voortgang richting volledige implementatie, terwijl een risicogestuurde aanpak meet of het restrisico aanvaardbaar is. Voor nieuwbouw en algehele renovatie is de eerste meetlat de juiste; voor bestaande objecten de tweede.
Ook niet aanwezig: een gap-analyse met de tussenwaarden "voldoet deels" en "informatie ontbreekt", ruimte voor objectspecifieke maatregelen buiten de CSIR, en velden voor prioritering, planning en herijkingsdatum.