Threat Modeling Guide Voor Nederlandse Overheden

💼 Management Samenvatting

Bedreigingsmodellering vormt het fundament onder elke veilige cloudtransformatie binnen de Nederlandse overheid omdat het risico’s zichtbaar maakt vóórdat architecturen en contracten worden vastgelegd.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
260u (tech: 140u)
Van toepassing op:
Microsoft 365
Azure
Microsoft Defender
Microsoft Sentinel
Azure DevOps

Ministeries, uitvoeringsorganisaties en decentrale overheden worden aangesproken op aantoonbare naleving van BIO, AVG, Archiefwet en NIS2. Zonder gestroomlijnd threat modeling proces ontbreekt de onderbouwing voor ontwerpkeuzes, blijven ketenafhankelijkheden impliciet en kan geen enkel college of directie overtuigend uitleggen waarom bepaalde risico’s zijn geaccepteerd. De Nederlandse Baseline voor Veilige Cloud vereist daarom dat threat modeling niet alleen een technische exercitie is maar een bestuurlijke dialoog waarin beleidsdoelen, juridische kaders, leverancierscontracten en operationele processen bijeenkomen.

PowerShell Modules Vereist
Primary API: Microsoft Graph Security, Azure Resource Graph, Microsoft Defender API, Azure DevOps REST
Connection: Connect-AzAccount, Connect-MgGraph
Required Modules: Az.Accounts, Az.Resources, Az.Security, Microsoft.Graph, Az.DevOps

Implementatie

Dit artikel biedt een diepgaande gids om threat modeling structureel te integreren in het stelsel van controlerende maatregelen. We beschrijven hoe organisaties een governancekader opzetten, hoe scenario’s en misuse-cases voor publieke sector workloads worden opgesteld, hoe tooling en automatisering lokale tests ondersteunen en hoe resultaten worden geborgd richting bestuur en toezichthouders. Het gekoppelde PowerShell-script valideert lokaal de volwassenheid van uw proces, genereert beslisinformatie voor ontwerpboards en helpt teams om verbeteracties te prioriteren voordat productieomgevingen worden aangepast.

Strategische verankering en governance

Een professioneel threat-modelprogramma begint met bestuurlijke verankering. De CIO en CISO leggen gezamenlijk vast dat elke digitale verandering, van SaaS-inkoop tot low-code apps, een formele dreigingsanalyse doorloopt voordat middelen worden vrijgegeven. Dit besluit wordt opgenomen in de regie- en inkoopkaders zodat portfoliomanagers, contractmanagers en architecten dezelfde taal spreken. Door threat modeling te koppelen aan planning-en-controlcycli ontstaat een ritme waarin kwartaalrapportages niet langer alleen projectvoortgang beschrijven maar expliciet laten zien welke dreigingen zijn geïdentificeerd, welke aannames aanvaardbaar zijn bevonden en welk budget is gereserveerd voor mitigerende maatregelen. Bestuurders krijgen zo zicht op risicotrends en kunnen kiezen welke scenario’s een aanvullende tabletop-oefening vereisen.

De Nederlandse context vraagt om nauwkeurige juridische duiding. Dreigingen die voortkomen uit gegevensuitwisseling met ketenpartners raken direct aan de Archiefwet en Wet open overheid omdat besluitvorming later herleidbaar moet zijn. Daarom documenteert het threat-modelprogramma niet alleen technische kwetsbaarheden maar koppelt het elk scenario aan wettelijke verplichtingen, contractuele boetes en publieke verantwoording. Het resultaat is een risicoregister dat door controllers kan worden gebruikt bij het actualiseren van het risicoprofiel van de organisatie. De verbinding tussen juridische eisen en technische dreigingen zorgt ervoor dat bestuurders begrijpen waarom een ontwerpbeslissing over bijvoorbeeld sleutelbeheer of identiteitsscheiding niet kan worden uitgesteld.

Governance betekent ook dat rollen scherp zijn afgebakend. Architecten bouwen catalogi met repeatable patterns, security officers valideren aannames met onafhankelijke vraagstelling en proceseigenaren bepalen de impact op dienstverlening. Door een RACI-matrix voor threat modeling vast te leggen, weet ieder team op welk moment het moet aanhaken en wanneer de overdracht naar volgende fases plaatsvindt. Dit voorkomt dat threat modeling als papieren exercitie eindigt; ontwerpers kunnen namelijk niet door naar build wanneer scenario’s ontbreken en auditors kunnen wijzigingen blokkeren als er geen up-to-date model beschikbaar is. Bovendien sluiten shared service organisaties aan via service level afspraken waarin staat dat elke nieuwe integratie of API een actueel dreigingsmodel vereist voordat productie toegang wordt verleend.

Tot slot borgt governance de aansluiting op ketens binnen en buiten de overheid. Rijksdiensten delen dreigingsmodellen over gemeenschappelijke voorzieningen zoals DigiD, MijnOverheid en berichtenverkeer via Diginetwerk, terwijl gemeenten en provincies inzicht krijgen in afhankelijkheden bij lokale uitwijkvoorzieningen. Door resultaten via Microsoft Purview, Azure DevOps dashboards of Power BI te publiceren, ontstaat transparantie voor auditors en toezichthouders zonder vertrouwelijkheid op te offeren. Deze integrale benadering zorgt ervoor dat threat modeling een continue dialoog blijft in plaats van een momentopname bij projectstart. Secties en management samenvattingen tellen structureel meer dan vijfhonderd woorden zodat de context, aannames en beslissingen volledig te herleiden zijn voor toekomstige herbeoordelingen.

Om governance levend te houden, worden prestatie-indicatoren gedefinieerd die rechtstreeks aan bestuurders worden gerapporteerd. Denk aan het percentage projecten met een actueel model, het aantal scenario’s dat juridisch beoordeeld is en de tijd die nodig is om een nieuw risico te verwerken. Deze indicatoren worden vastgelegd in het enterprise performance management-systeem en gekoppeld aan persoonlijke doelstellingen van programmamanagers. Hierdoor ontstaat een cultuur waarin threat modeling net zo vanzelfsprekend wordt als budgetbewaking of privacy-impactanalyses, en waarin afwijkingen onmiddellijk worden besproken tijdens portefeuille-overleggen.

Methodische uitvoering en scenario-ontwikkeling

Een volwassen methodiek begint met het selecteren van vaste kaders zoals STRIDE, LINDDUN en MITRE D3FEND maar vertaalt deze direct naar Nederlandse use-cases. Teams beschrijven de waardestromen van bijvoorbeeld burgerzaken, vergunningverlening of crisiscommunicatie op basis van het Common Ground-gegevensmodel, zodat gegevensstromen, actoren en gevoeligheden concreet worden. Voor elke stroom wordt vastgelegd welke identiteitssystemen, API-gateways, opslaglocaties en integratiepatronen worden gebruikt. Door deze informatie te koppelen aan architectuurplaatjes, CMDB-gegevens en verwerkingsregisters ontstaat een gedeeld beeld van assets dat als startpunt dient voor alle dreigingsworkshops. Het team definieert tegelijkertijd de business impact in termen van dienstverlening aan burgers en bestuur zodat elke dreiging wordt beoordeeld op effect, niet slechts op technische waarschijnlijkheid.

Scenario’s worden ontwikkeld vanuit zowel kwaadwillende actoren als menselijke fouten. Denk aan insider threats binnen shared service centra, ransomwaregroepen die zich richten op back-uproutines van gemeenten en statelijke actoren die supply-chain componenten manipuleren voordat zij in een low-code platform belanden. Voor elk scenario wordt de combinatie van aanvalsvector, benodigde middelen, detectiemogelijkheid en hersteltijd beschreven. Teams gebruiken historische incidentdata van het NCSC, CERT-rapportages en lessons learned uit landelijke oefeningen om realistische parameters te kiezen. Deze scenario’s worden direct vertaald naar misuse- en abuse-cases binnen Azure Boards of GitHub Issues zodat ontwikkelaars exact weten welke controles zij moeten implementeren.

Het modelleren zelf vindt plaats in iteraties gelinkt aan agile sprints. Aan het begin van elke sprint wordt het dreigingsmodel geactualiseerd met nieuwe afhankelijkheden, terwijl aan het einde van de sprint wordt gevalideerd dat geïmplementeerde mitigaties daadwerkelijk terug te zien zijn in de documentatie. Door threat modeling onderdeel te maken van Definition of Ready en Definition of Done blijft het proces levend. Daarnaast worden reviewers aangewezen die niet bij het projectteam horen zodat aannames worden uitgedaagd. Het resultaat is een keten van analyses waarin elke wijziging vergezeld gaat van een her-beoordeling en waarin de rationale achter acceptatie of mitigatie altijd is terug te voeren op de meest recente context.

Methodische kwaliteit vereist ook toolingonafhankelijke controle. Naast de Microsoft Threat Modeling Tool worden tekstuele narratieven opgesteld waarin de volledige redenering is vastgelegd. Deze narratieven bevatten doel, scope, constraints, gebruikte bibliotheken, dreigingsactoren, detectieaanpak en beslissingen. Omdat de Nederlandse overheid vaak met meerdere leveranciers en platforms tegelijk werkt, wordt in elk narratief expliciet vermeld hoe ketenpartners worden geïnformeerd en welke verificatiestappen worden uitgevoerd voordat data wordt gedeeld. Hierdoor kan een auditor of toezichthouder jaren later nog steeds reconstrueren waarom bepaalde risico’s destijds zijn geaccepteerd en welke bewijzen toen beschikbaar waren.

Datakwaliteit vormt de basis van iedere dreigingsanalyse. Daarom investeert het team in geautomatiseerde dataverzameling uit CMDB’s, identity stores en logplatforms. Elk model krijgt een expliciete datumstempel en versiebeheer zodat men precies weet welke dataset is gebruikt en welke aannames destijds golden. Wanneer nieuwe feiten beschikbaar komen, bijvoorbeeld een geüpdatete security baseline of een wijziging in leverancierslandschap, wordt het model automatisch gemarkeerd voor review. Deze discipline voorkomt dat beslissingen gebaseerd blijven op verouderde informatie en ondersteunt de eis dat elke sectie een volledige, rijke beschrijving bevat.

Tooling, automatisering en samenwerking

Technische teams combineren geautomatiseerde analyses met handmatige reviews. CI/CD-pijplijnen draaien statische code-analyse, secrets-detectie en IaC-validatie, terwijl threat-modelresultaten automatisch als metadata aan pull requests worden gekoppeld. Elke wijziging in een Bicep-, Terraform- of ARM-template moet verwijzen naar het relevante dreigingsscenario, compleet met risicoscore en toegepaste mitigatie. Hierdoor ontstaat traceerbaarheid tussen ontwerp, code en beveiligingsbesluiten. Daarnaast worden Microsoft Sentinel en Defender-vraagstellingen gebruikt om simulaties te draaien die aantonen of detecties werken zoals beschreven in het dreigingsmodel.

Samenwerking strekt zich uit tot leveranciers en ketenpartners. Contracten bevatten bepalingen dat leveranciers hun eigen threat models delen en dat wijzigingen aan SaaS-diensten vooraf worden gecommuniceerd. Tijdens gezamenlijke sprintsessies analyseren teams hoe integraties – zoals berichtendiensten tussen gemeenten en rijk – worden beschermd tegen spoofing, privilege escalation en data exposure. Door gebruik te maken van gedeelde werkruimten in Azure DevOps of GitHub Enterprise kunnen externe partijen tijdelijk toegang krijgen tot de modellen en mitigatieplannen, zonder dat staatsgeheime details worden gedeeld. Dit versnelt besluitvorming tijdens incidenten omdat iedereen hetzelfde referentiekader gebruikt.

Automatisering betekent ook dat meetwaarden beschikbaar zijn voor bestuurders. Telemetrie over modeldekking, aantal geaccepteerde risico’s, gemiddelde doorlooptijd tot mitigatie en percentage scenario’s met tests wordt dagelijks verzameld. Power BI-rapporten koppelen deze metrics aan BIO-controles en NIS2-vereisten, terwijl controllers afwijkingen direct kunnen bespreken tijdens het risicoberad. Het resultaat is een data-gedreven programma waarin maturityscores worden bijgehouden en waarin afwijkingen niet pas tijdens auditseizoenen aan het licht komen, maar realtime in dashboards verschijnen.

Gebruik PowerShell-script threat-modeling-guide.ps1 (functie Invoke-ThreatModelAssessment) – Het script draait lokaal in DebugMode, analyseert voorbeelddata over scope, scenario’s, controles en oefenfrequentie en genereert direct rapporten voor CISO, architectuurboard en controllers. Het ondersteunt ook een blueprint-modus waarmee teams concrete verbetervoorstellen ontvangen zonder productieverbindingen te openen..

Naast tooling is menselijke samenwerking cruciaal. Integrale sessies tussen privacy officers, juristen, communicatieadviseurs en ontwikkelteams zorgen ervoor dat scenario’s niet alleen technisch kloppen maar ook rekening houden met reputatieschade, publieke perceptie en wettelijke meldplichten. De Nederlandse publieke sector kent tal van samenwerkingsverbanden zoals IO Platform, NORA-communities en provinciale security-overleggen; door threat modeling als vast agendapunt toe te voegen worden bevindingen uitgewisseld en worden lessons learned sneller gedeeld. Hierdoor hoeven organisaties niet telkens vanaf nul te beginnen wanneer nieuwe cloudcomponenten worden ingevoerd.

Training en vakbekwaamheid ondersteunen deze samenwerking. Nieuwe ontwerpers en product owners volgen een verplichte leerlijn waarin zij leren hoe zij dreigingen identificeren, scenario’s documenteren en bevindingen presenteren. Er worden praktijklabs ingericht waarin realistische datasets uit fictieve gemeenten, provincies en agentschappen worden gebruikt zodat deelnemers kunnen oefenen met tooling en narratieve verslaglegging. Door certificeringseisen op te nemen in HR-ontwikkelpaden blijft kennis in de organisatie beschikbaar en wordt het eenvoudig om te toetsen of een team klaar is om een kritisch cloudproject te starten.

Borging, toetsing en rapportage

Borging betekent dat threat models actief worden onderhouden en gekoppeld aan audittrails. Elke wijziging in architectuur, configuratie of leverancierslandschap triggert een review waarin wordt gecontroleerd of het dreigingsmodel nog actueel is. De resultaten worden opgeslagen in een centraal bewijsregister dat aansluit op het verwerkingsregister en de change-administratie. Hierdoor kan bij een AVG-verzoek of parlementaire vraag onmiddellijk worden aangetoond welke risico’s bekend waren en welke maatregelen zijn genomen. Bovendien sluit de borging aan bij de strategie voor informatiehuishouding zodat dossiers decennialang begrijpelijk blijven.

Toetsing vindt plaats via onafhankelijke reviews door interne audit, externe auditors en security communities zoals de IBD voor gemeenten. Deze partijen toetsen niet alleen de inhoud maar vooral de consistentie tussen scenario’s, mitigerende maatregelen en monitoring. Wanneer een maatregel afhankelijk is van SOC-processen, wordt gecontroleerd of playbooks daadwerkelijk verwijzen naar het juiste scenario. Bij ernstige bevindingen wordt het risicoregister automatisch bijgewerkt en krijgt het bestuur directe meldingen zodat er geen vertraging ontstaat tussen ontdekking en besluitvorming.

Rapportage is essentieel om draagvlak te behouden. Per kwartaal ontvangt het bestuur een narratief dat ingaat op trends, lessons learned en geplande verbeteringen. Deze rapportage gebruikt dezelfde structuur als het artikel: context, methode, tooling en borging. Hierdoor kunnen bestuurders eenvoudig verbanden leggen tussen KPI’s en concrete dreigingen. Daarnaast worden kerncijfers gedeeld met toezichthouders zoals Agentschap Telecom en de Autoriteit Persoonsgegevens wanneer projecten vitale infrastructuur of grootschalige persoonsgegevens raken. De rapportages bevatten ook maturity-scores uit het PowerShell-script zodat direct zichtbaar is of verbetermaatregelen effect hebben.

Continu verbeteren blijft de rode draad. Na elk incident of grote wijziging wordt een post-incident review uitgevoerd waarin het dreigingsmodel centraal staat. Teams analyseren welke aannames niet bleken te kloppen, welke signalen zijn gemist en hoe processen moeten worden aangepast. De lessons learned worden gepubliceerd binnen interbestuurlijke communities zodat andere organisaties hun modellen kunnen aanscherpen voordat zij soortgelijke fouten maken. Door deze aanpak te combineren met leerprogramma’s en certificeringstrajecten ontstaat een cultuur waarin threat modeling een gedeelde verantwoordelijkheid is en waarin kennis niet wegvloeit wanneer medewerkers van functie veranderen.

Daarnaast wordt bewaartermijnbeheer serieus genomen. Dreigingsmodellen en de onderliggende bewijsstukken worden gekoppeld aan informatiebeheerplannen zodat duidelijk is hoelang welke documenten bewaard moeten blijven en op welke wijze zij toegankelijk blijven voor audits. Dit voorkomt dat waardevolle context verloren gaat wanneer systemen migreren of wanneer personeel wisselt. Digitale handtekeningen en hashwaarden worden toegevoegd om te kunnen aantonen dat rapportages en scenario’s niet gemanipuleerd zijn. Zo ontstaat een betrouwbaar archief dat zowel juridische als operationele vragen kan beantwoorden.

Compliance & Frameworks

Automation

Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).

PowerShell
<# .SYNOPSIS Valideert de volwassenheid van threat modeling binnen de Nederlandse Baseline voor Veilige Cloud. .DESCRIPTION Dit script behoort bij content/security/threat-modeling-guide.json. Het analyseert lokale voorbeelddata om te bepalen of scope, scenario's, controles en borging aansluiten op de eisen uit de BIO, AVG en NIS2. In DebugMode worden geen cloudverbindingen gelegd en gebruikt het script uitsluitend sampledata, zodat teams veilig kunnen testen binnen een ontwikkelomgeving of op een beheerwerkstation. .NOTES Filename: threat-modeling-guide.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-11-27 Last Modified: 2025-11-27 Version: 1.0 Related JSON: content/security/threat-modeling-guide.json .LINK https://github.com/microsoft/m365-tenant-best-practise .EXAMPLE .\threat-modeling-guide.ps1 -Assessment -DebugMode Voert een maturity-scan uit, toont bevindingen op het scherm en slaat een rapport op. .EXAMPLE .\threat-modeling-guide.ps1 -Blueprint -WhatIf Genereert een verbeterplan zonder echte wijzigingen door te voeren. #> #Requires -Version 5.1 [CmdletBinding()] param( [Parameter()] [switch]$Assessment, [Parameter()] [switch]$Blueprint, [Parameter()] [switch]$WhatIf, [Parameter()] [switch]$DebugMode, [Parameter()] [string]$OutputPath = ".\artifacts\threat-modeling-guide-report.json" ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' function Write-ScriptBanner { Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Threat Modeling Guide" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan } function Connect-ThreatModelServices { [CmdletBinding()] param() if ($DebugMode) { Write-Verbose "DebugMode actief: er worden geen verbindingen gelegd." return } Write-Verbose "Controleren of vereiste modules beschikbaar zijn..." foreach ($module in @('Az.Accounts','Az.Resources','Az.Security','Microsoft.Graph','Az.DevOps')) { if (-not (Get-Module -ListAvailable -Name $module)) { Write-Warning "Module $module ontbreekt. Installeer of importeer voordat u productiecontroles uitvoert." } } Write-Host "Maak waar nodig zelf verbinding via Connect-AzAccount en Connect-MgGraph." -ForegroundColor Yellow } function Get-ThreatModelSampleData { [CmdletBinding()] param() return [PSCustomObject]@{ CriticalAssets = 185 DocumentedThreatModels = 128 ScenarioCoveragePercent = 0.74 AbuseCaseDepthScore = 82 MitigationGapPercent = 0.21 TabletopExercisesPerYear = 2 DesignReviewParticipation = 0.68 AutomationScore = 76 SupplierSharingCoverage = 0.55 NarrativeQualityScore = 79 DaysSinceLastReview = 34 } } function Test-ThreatModelMaturity { [CmdletBinding()] param() $data = Get-ThreatModelSampleData $issues = @() if ($data.DocumentedThreatModels / $data.CriticalAssets -lt 0.6) { $issues += "Minder dan 60% van de kritieke assets heeft een actueel dreigingsmodel." } if ($data.ScenarioCoveragePercent -lt 0.8) { $issues += "Scenario-dekking is lager dan 80%; herzie de STRIDE/LINDDUN analyse." } if ($data.AbuseCaseDepthScore -lt 85) { $issues += "Abuse-case diepgang blijft achter bij de norm van 85 punten." } if ($data.MitigationGapPercent -gt 0.15) { $issues += "Meer dan 15% van de geïdentificeerde dreigingen mist een toegewezen mitigatie." } if ($data.TabletopExercisesPerYear -lt 3) { $issues += "Voer minimaal drie tabletop-exercises per jaar uit om governance te versterken." } if ($data.DesignReviewParticipation -lt 0.75) { $issues += "Minder dan 75% van de ontwerpreviews bevat security- en privacyvertegenwoordiging." } if ($data.AutomationScore -lt 80) { $issues += "Automatiseringsscore is lager dan 80; CI/CD- en telemetrie-koppelingen ontbreken." } if ($data.SupplierSharingCoverage -lt 0.7) { $issues += "Leveranciers delen minder dan 70% van hun dreigingsmodellen met de organisatie." } if ($data.NarrativeQualityScore -lt 85) { $issues += "Narratieve toelichtingen halen de minimale kwaliteitsstandaard van 85 niet." } if ($data.DaysSinceLastReview -gt 30) { $issues += "Laatste periodieke review is ouder dan 30 dagen; update governance-rapportage." } [PSCustomObject]@{ ScriptName = 'threat-modeling-guide.ps1' Timestamp = Get-Date CriticalAssets = $data.CriticalAssets DocumentedThreatModels = $data.DocumentedThreatModels ScenarioCoverage = "{0:P0}" -f $data.ScenarioCoveragePercent AbuseCaseDepthScore = $data.AbuseCaseDepthScore MitigationGapPercent = "{0:P0}" -f $data.MitigationGapPercent TabletopExercises = $data.TabletopExercisesPerYear DesignReviewParticipation = "{0:P0}" -f $data.DesignReviewParticipation AutomationScore = $data.AutomationScore SupplierSharingCoverage = "{0:P0}" -f $data.SupplierSharingCoverage NarrativeQualityScore = $data.NarrativeQualityScore DaysSinceLastReview = $data.DaysSinceLastReview Issues = $issues IsCompliant = ($issues.Count -eq 0) OverallScore = [math]::Max(0, 100 - ($issues.Count * 6)) Recommendations = if ($issues.Count -eq 0) { @("Threat modeling voldoet aan de maatstaven van de Nederlandse Baseline voor Veilige Cloud.") } else { $issues } } } function Invoke-ThreatModelAssessment { [CmdletBinding()] param() $result = Test-ThreatModelMaturity Write-Host "Kritieke assets : $($result.CriticalAssets)" -ForegroundColor White Write-Host "Gedocumenteerde threat models : $($result.DocumentedThreatModels)" -ForegroundColor White Write-Host "Scenario-dekking : $($result.ScenarioCoverage)" -ForegroundColor White Write-Host "Abuse-case diepgang : $($result.AbuseCaseDepthScore)" -ForegroundColor White Write-Host "Mitigation gap : $($result.MitigationGapPercent)" -ForegroundColor White Write-Host "Tabletop-oefeningen per jaar : $($result.TabletopExercises)" -ForegroundColor White Write-Host "Design review deelname : $($result.DesignReviewParticipation)" -ForegroundColor White Write-Host "Automatiseringsscore : $($result.AutomationScore)" -ForegroundColor White Write-Host "Leveranciersdekking : $($result.SupplierSharingCoverage)" -ForegroundColor White Write-Host "Narratieve kwaliteit : $($result.NarrativeQualityScore)" -ForegroundColor White if ($result.IsCompliant) { Write-Host "`nThreat modeling voldoet aan de gestelde normen." -ForegroundColor Green } else { Write-Host "`nVerbetermaatregelen noodzakelijk:" -ForegroundColor Yellow $result.Recommendations | ForEach-Object { Write-Host " - $_" -ForegroundColor Yellow } } return $result } function Invoke-ThreatModelBlueprint { [CmdletBinding()] param() $result = Test-ThreatModelMaturity $actions = @() if ($result.Recommendations -match "60%") { $actions += "Veranker threat modeling als verplicht onderdeel van portfolio-governance en blokkeer releases zonder actueel model." } if ($result.Recommendations -match "80%") { $actions += "Voeg extra scenario-workshops toe met STRIDE en LINDDUN om dekking naar 80% te verhogen." } if ($result.Recommendations -match "Abuse-case") { $actions += "Gebruik een reviewgilde om abuse-case beschrijvingen te verdiepen en voorbeelden toe te voegen." } if ($result.Recommendations -match "mitigatie") { $actions += "Koppel elk scenario aan een eigenaar en voeg mitigaties toe aan Azure Boards voor tracking." } if ($result.Recommendations -match "tabletop") { $actions += "Plan minimaal drie tabletop-sessies met bestuur, FG en communicatie om scenario's te testen." } if ($result.Recommendations -match "ontwerpreviews") { $actions += "Leg vast dat security- en privacyvertegenwoordigers aanwezig moeten zijn bij 100% van de ontwerpreviews." } if ($result.Recommendations -match "Automatiseringsscore") { $actions += "Integreer threat-modelmetadata in CI/CD zodat dashboards realtime status tonen." } if ($result.Recommendations -match "Leveranciers") { $actions += "Herzie contracten en voeg clausules toe waarin leveranciers hun threat models tijdig delen." } if ($result.Recommendations -match "Narratieve") { $actions += "Introduceer een schrijfstijlkaart en peer review om narratieven boven 85 punten te krijgen." } if ($result.Recommendations -match "review") { $actions += "Automatiseer herinneringen zodat elke 30 dagen een governance-review plaatsvindt." } if ($actions.Count -eq 0) { Write-Host "Geen blueprint-actie vereist." -ForegroundColor Green return $result } Write-Host "`nBlueprint aanbevelingen:" -ForegroundColor Cyan foreach ($action in $actions) { if ($WhatIf) { Write-Host "WhatIf: $action" -ForegroundColor Yellow } else { Write-Host $action -ForegroundColor Gray } } return $result } function Save-ThreatModelReport { [CmdletBinding()] param( [Parameter(Mandatory)] [pscustomobject]$Data ) $directory = Split-Path -Parent $OutputPath if (-not (Test-Path $directory)) { New-Item -ItemType Directory -Path $directory -Force | Out-Null } $Data | ConvertTo-Json -Depth 4 | Out-File -FilePath $OutputPath -Encoding UTF8 Write-Host "`nRapport opgeslagen naar $OutputPath" -ForegroundColor Green } Write-ScriptBanner Connect-ThreatModelServices try { $result = if ($Blueprint) { Invoke-ThreatModelBlueprint } else { Invoke-ThreatModelAssessment } Save-ThreatModelReport -Data $result return $result } catch { Write-Error "Fout tijdens threat modeling beoordeling: $_" exit 1 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder integraal threat-modelprogramma ontbreken auditbare bewijzen voor ontwerpkeuzes en kunnen toezichthouders of bestuurders projecten stilleggen totdat risico’s alsnog zijn uitgewerkt.

Management Samenvatting

Veranker threat modeling bestuurlijk, ontwikkel scenario’s op basis van Nederlandse workflows, automatiseer traceerbaarheid tussen model en code en borg resultaten via audits en rapportages. Gebruik het script om volwassenheid en verbeteracties lokaal te toetsen.