Secure Score Optimaliseren Voor Naleving En Bestuur

💼 Management Samenvatting

Secure Score is binnen Microsoft 365 uitgegroeid tot het meest directe instrument om te tonen hoe technische maatregelen bijdragen aan audit- en continuïteitseisen. Nederlandse overheidsorganisaties kunnen er bestuurders mee overtuigen dat verbeteracties daadwerkelijk effect hebben, mits de score onderdeel is van het governanceproces.

Aanbeveling
IMPLEMENT
Risico zonder
Medium
Risk Score
6/10
Implementatie
200u (tech: 120u)
Van toepassing op:
M365
Microsoft Secure Score
Microsoft Defender
Publieke Sector
Rijksdiensten
Gemeenten
ZBO's

Zonder duidelijke regie wordt Secure Score een wisselend cijfer dat vooral door productupdates en licentiewijzigingen wordt beïnvloed. Teams lopen dan telkens achter de feiten aan en verliezen het vertrouwen van controllers, auditors en toezichthouders. Bovendien blijft onduidelijk hoe verbeterpunten doorstromen naar change boards of hoe uitzonderingen worden geaccepteerd.

PowerShell Modules Vereist
Primary API: Microsoft Graph Security API (secureScores, secureScoreControlProfiles)
Connection: Gebruik Connect-MgGraph met SecureScores.Read.All, Reports.Read.All en Directory.Read.All voor beleidsdata
Required Modules: Microsoft.Graph

Implementatie

Dit artikel beschrijft hoe de Nederlandse Baseline voor Veilige Cloud Secure Score koppelt aan compliancebesluiten, portfolio- en risicosturing. We behandelen de bestuurlijke verankering, de datagedreven prioritering op basis van het script `secure-score-optimization.ps1` en de manier waarop rapportages rechtstreeks aansluiten op BIO- en NIS2-controles.

Bestuurlijke verankering van Secure Score binnen complianceketens

Secure Score levert pas waarde wanneer bestuurders, proceseigenaren en technische teams dezelfde interpretaties hanteren over wat het cijfer betekent, welke risico's het vertegenwoordigt en hoe verbeteringen worden geborgd. Nederlandse overheidsorganisaties hebben te maken met gedeelde verantwoordelijkheden over departementen, agentschappen en uitvoeringsorganisaties. Daardoor is het essentieel om een governanceboard aan te wijzen waarin CISO-office, Chief Privacy Officer, Chief Data Officer en de vertegenwoordiger van de business samen bepalen welke Secure Score-onderdelen prioriteit krijgen. Dit board koppelt het cijfer aan beleidsdoelstellingen, zoals het verhogen van de digitale weerbaarheid of het voldoen aan Rijksbrede afspraken over Zero Trust. Door deze koppeling wordt Secure Score niet gezien als een willekeurige Microsoft-indicator, maar als een directe graadmeter voor de mate waarin de organisatie grip heeft op identiteitsbeheer, data-classificatie en detectiecapaciteiten. Het bestuur kan daardoor vragen wat een daling betekent, welke processen geraakt worden en welke investeringen nodig zijn om de score te herstellen.

Een tweede succesfactor is de manier waarop Secure Score wordt gekoppeld aan het risicoregister en de control catalogus. Binnen de Nederlandse Baseline voor Veilige Cloud hoort elke maatregel bij concrete BIO- en NIS2-eisen. Voor Secure Score betekent dit dat elk onderliggend verbeterpunt wordt vertaald naar een risico-item met een eigenaar, beoogde termijn en acceptatiecriteria. Wanneer bijvoorbeeld meervoudige authenticatie voor beheerders nog niet op 100% staat, wordt dit expliciet vastgelegd als een afwijking op BIO-maatregel 9.02. Auditors zien daarmee direct dat de organisatie de residuele risico's begrijpt en bestuurlijk heeft geaccepteerd of geadresseerd. Het voorkomt eveneens dat Secure Score als losse KPI wordt beheerd zonder context. Door het tekenen van deze relaties kan het auditteam tijdens controles aantonen welke Secure Score-scenario's prioriteit kregen, hoe beslissingen zijn vastgelegd in het risicoregister en welke compenserende maatregelen zijn getroffen wanneer technische implementatie tijdelijk onmogelijk bleek.

Daarnaast is consistente datakwaliteit cruciaal. Organisaties die meerdere tenants, hybride workloads of complexe delegaties gebruiken, zien vaak dat Secure Score-rapportages verschillen per beheerder. Een landelijke instelling die intensief met samenwerkingspartners werkt kan bijvoorbeeld nog klassieke Exchange-instellingen hebben waarvoor de score maatregelen aanbeveelt die al buiten scope zijn. Om dat te voorkomen is een vast intakeproces nodig waarin iedere wijziging aan licenties, workloads of beheerstructuren wordt geregistreerd en geverifieerd op impact voor Secure Score. Dit proces bekijkt of instellingen bewust zijn overschreven, of uitzonderingen correct zijn gedocumenteerd en of de rapportagefrequentie past bij de gekozen kritikaliteit. Zo blijft de score een betrouwbare bron voor managementrapportages en niet een momentopname die per ongeluk is beïnvloed door een testtenant of tijdelijke pilot. Het governanceboard ontvangt maandelijks een datakwaliteitsoverzicht zodat zij besluiten kunnen nemen over sanering van verouderde onderdelen of het combineren van meerdere tenants tot één zichtlijn.

Verandermanagement vormt het vierde ankerpunt. Secure Score-verbeteringen hebben effect op eindgebruikers, beheerprocessen en soms zelfs op contractuele afspraken met leveranciers. Daarom eist de Nederlandse Baseline dat elk Secure Score-initiatief onderdeel uitmaakt van het reguliere changeproces met impactanalyse, communicatieplan en terugvalscenario. Wanneer bijvoorbeeld veilige bijlagen voor Exchange Online worden ingeschakeld, bepaalt het changeboard samen met de productowner of de instelling compatibel is met bestaande maatwerkoplossingen, hoe uitzonderingen worden aangevraagd en welke monitoring nodig is om gebruikersimpact te minimaliseren. Door Secure Score als formele change te behandelen, ontstaan automatische koppelingen met CMDB, releasekalenders en post-implementation reviews. Het bestuur kan hierdoor terugkijken of verbeteringen daadwerkelijk zijn afgerond, of ze de score hebben verhoogd en welke leerpunten moeten worden meegenomen naar komende iteraties.

Tot slot wordt Secure Score ingebed in de dialoog met ketenpartners en toezichthouders. Overheidsorganisaties delen steeds vaker cloudplatforms, gedeelde services en security operations centers. Wanneer Secure Score-resultaten worden gedeeld met deze partners, moet duidelijk zijn welke delen van de score gezamenlijk eigendom zijn en hoe verantwoordelijkheden verdeeld zijn. Het raamwerk schrijft daarom voor dat er een samenwerkingsparagraaf komt waarin per maatregel staat of deze onder het beheer van de centrale dienstverlener valt, of dat de afnemende organisatie zelf actie moet ondernemen. Door deze transparantie kunnen ketenpartners aantonen dat zij elkaars beveiligingsniveaus kennen en dat verbeteracties tijdig worden afgestemd. Tegenover toezichthouders ontstaat daarmee een volwassen verhaal: Secure Score laat de technische voortgang zien, terwijl het governanceproces bewijst dat beslissingen traceerbaar zijn en aansluiten op wettelijke verplichtingen. Dit voorkomt defensieve discussies tijdens audits en maakt het mogelijk om verbeteringen actief te etaleren als bewijs van continue professionalisering.

Datagedreven prioritering en control impact

Gebruik PowerShell-script secure-score-optimization.ps1 (functie Invoke-SecureScoreAssessment) – Bereken trends, maturityscores en prioriteiten op basis van Secure Score-telemetrie of voorbeelddata in DebugMode..

Waar traditionele verbeterplannen vaak leunen op meningen van specialisten, maakt Secure Score het mogelijk om objectieve data te gebruiken voor prioritering. Het script `Invoke-SecureScoreAssessment` haalt de meest recente secureScores en secureScoreControlProfiles via Microsoft Graph op en combineert deze met lokale contextvariabelen, zoals risicocategorieën of gevoeligheid van diensten. Daardoor ontstaat een gewogen score per control die rekening houdt met regelgeving, de mate van automatisering en de resterende inspanning. Binnen de Nederlandse overheid is dit belangrijk omdat sommige maatregelen wettelijk verplicht zijn, terwijl andere vooral bijdragen aan operationele efficiëntie. Het script vertaalt de Graph-data daarom naar maturityniveaus en labelt elke control als Fundamenteel, Verbeterd of Geoptimaliseerd. Teams kunnen zo direct zien waar de minimale BIO-baseline nog niet wordt gehaald en welke maatregelen juist kansen bieden om de beveiligingspositie te differentiëren ten opzichte van ketenpartners.

Een tweede functie van het script is het herkennen van trends. Door meerdere secureScores over tijd te vergelijken wordt duidelijk of een maatregel stabiel verbetert, stagneert of terugvalt. Het script berekent per control een momentumindicator die aangeeft hoeveel procentpunten de score in de afgelopen vier weken is verschoven. Hierdoor kunnen securitymanagers vooruit kijken in plaats van te reageren op plotselinge dalingen. Wanneer het momentum negatief is bij een control die direct gekoppeld is aan wettelijke eisen, genereert het script automatisch een waarschuwing dat escalatie richting management noodzakelijk is. In DebugMode levert het script synthetische datasets die dezelfde rekenlogica doorlopen, zodat teams het rapport lokaal kunnen testen zonder cloudverbinding. Dit sluit aan op de eis van de Nederlandse Baseline om scripts maximaal vijftien seconden te laten draaien tijdens tests en om wijzigingen altijd eerst in een gecontroleerde omgeving te valideren.

De output van `Invoke-SecureScoreAssessment` bestaat uit een prioriteitenmatrix die compliance, risico en inspanning combineert. Elke control krijgt een impactscore op basis van de betrokken workload, de mate waarin het een keten raakt en de hoeveelheid eindgebruikers. Deze impactscore wordt gedeeld met project- en portfolioboards zodat zij investeringen kunnen afstemmen. Een maatregel die bijvoorbeeld een relatief lage technische inspanning vraagt maar een hoog risico afdekt, wordt automatisch gemarkeerd als quick win. Omgekeerd worden maatregelen die wel veel punten opleveren maar enorme verandervraagstukken veroorzaken, gecombineerd met aanvullende scenarioanalyses. Denk aan het verplicht blokkeren van legacy-authenticatie voor nicheapplicaties in de zorgketen: het script signaleert de hoge winst, maar koppelt daar direct de afhankelijkheden aan zodat een besluit bewust kan worden genomen. Zo ontstaat een volwassen dialoog over prioriteiten, waarbij data niet alleen aangeeft wat Microsoft adviseert, maar ook hoe dit zich verhoudt tot lokale processen en wettelijke plichten.

Het script levert bovendien gedetailleerde controlprofielen die beschrijven welke configuraties moeten worden aangepast, welke documentatie naar auditors gestuurd moet worden en hoe meetwaarden automatisch kunnen worden vastgelegd. Deze profielen worden opgeslagen in het rapportobject dat later door het artikel als bewijs wordt gebruikt. Door de profielen direct te koppelen aan changeverzoeken, CMDB-relaties en kennisartikelen, hoeven teams niet langer handmatig te zoeken naar aanvullende documentatie. Het rapport bevat hyperlinks naar Microsoft Learn-artikelen, verwijzingen naar beleidsoverzichten en aanbevelingen voor aanvullende monitoring. Hierdoor kunnen beheerders die nieuw zijn in het onderwerp toch binnen enkele dagen aantoonbare vooruitgang boeken. Voor ketenpartners betekent dit dat zij dezelfde dataset kunnen importeren en er eigen analyses bovenop kunnen bouwen, waardoor de samenwerking versnelt en audits efficiënter verlopen.

Door deze datagedreven aanpak wordt Secure Score een integraal onderdeel van portfoliomanagement. FinOps-teams kunnen bijvoorbeeld precies zien welke maatregelen licentiewijzigingen vereisen en welke juist kosten besparen. De combinatie van trendanalyse, impactmodellering en controlprofielen maakt het mogelijk om beslissingen vooraf te toetsen en te documenteren waarom bepaalde aanbevelingen bewust zijn uitgesteld. Daarmee creëert de organisatie een transparant spoor dat bij audits direct kan worden overlegd: per control is vastgelegd welke data is gebruikt, welke scenario's zijn doorgerekend en waarom bestuurders een specifieke prioritering hebben geaccordeerd. Dit maakt Secure Score tot een strategisch stuurinstrument dat meer doet dan alleen punten optellen.

Operationele borging en rapportage richting bestuurders en toezichthouders

Gebruik PowerShell-script secure-score-optimization.ps1 (functie Publish-SecureScoreOptimizationReport) – Combineert telemetrie, maturityscores en actieplannen tot een exporteerbaar rapport voor bestuurders, auditors en ketenpartners..

Zodra prioriteiten zijn vastgesteld, verschuift de aandacht naar uitvoering en bewijsvoering. Het script `Publish-SecureScoreOptimizationReport` bouwt daarom een gestructureerd rapport dat onderdeel kan worden van CISO-updates, kwartaalreviews en board packs. Het rapport bevat de volledige telemetrie inclusief tijdstempels, de berekende maturityscores en een lijst met acties, verantwoordelijken en deadlines. Hierdoor kunnen bestuurders in één oogopslag zien hoe Secure Score zich ontwikkelt en welke beslissingen van hen worden verwacht. Het rapport gebruikt dezelfde terminologie als de Nederlandse Baseline voor Veilige Cloud, waardoor het moeiteloos kan worden vergeleken met andere controles op het gebied van identiteiten, devices en data. Voor organisaties met een gedeeld SOC of gedeelde tenant levert dit rapport een uniforme weergave waarmee discussies over verantwoordelijkheden sneller kunnen worden beslecht.

Een belangrijk onderdeel van operationele borging is de koppeling met service management. Het rapport genereert voor elke actie een referentie die direct kan worden geïmporteerd in ITSM-tools zoals ServiceNow of TOPdesk. Hierdoor ontstaat automatische traceerbaarheid: auditors kunnen nagaan in welk changeverzoek een Secure Score-acties is verwerkt, welke tests zijn uitgevoerd en wie goedkeuring heeft gegeven. Het script voegt bovendien een audittrail toe met hashwaarden, zodat aantoonbaar blijft dat het rapport niet is aangepast nadat het is goedgekeurd. Wanneer organisaties de rapporten archiveren volgens de eisen van de Archiefwet, kunnen zij ook jaren later nog reconstrueren hoe de Secure Score zich heeft ontwikkeld en welke besluiten zijn genomen op basis van welke dataset. Deze transparantie is essentieel in situaties waarin een incident plaatsvindt en achteraf moet worden aangetoond dat passende maatregelen zijn overwogen.

Het rapport ondersteunt eveneens de dialoog met toezichthouders zoals de ADR, de Algemene Rekenkamer of sectorale inspecties. Het bevat een aparte compliance-sectie waarin controles worden gemapt naar BIO-domeinen, NIS2-artikelen en AVG-vereisten. Per control wordt gemotiveerd hoe de maatregel bijdraagt aan de wettelijke plicht en welk rest risico overblijft wanneer implementatie nog niet is voltooid. Door deze mapping vooraf te verzorgen kunnen auditors hun vragen richten op de kleine subset waar daadwerkelijk onzekerheid bestaat, in plaats van het volledige Microsoft 365-landschap opnieuw uit te vragen. Dat bespaart tijd en voorkomt dat teams onder druk improviseren. Bovendien maakt de mapping duidelijk hoe Secure Score zich verhoudt tot andere indicatoren zoals Defender Secure Score of compliancebeoordelingen binnen Microsoft Purview, zodat toezichthouders een integraal beeld krijgen.

Continue verbetering wordt geborgd door het rapport te koppelen aan een cadans van lessons learned. Iedere kwartaalcyclus bevat een reflectie op behaalde acties, afwijkingen en verbeterideeën. Het script registreert automatisch of deadlines zijn gehaald en of aanvullende controles zijn toegevoegd. Tijdens retro- of verbeter-sessies kan het team de eerdere rapporten naast de nieuwste leggen en zien of de maturityscore inderdaad stijgt. Indien de score ondanks inspanningen gelijk blijft, biedt het rapport suggesties voor root-cause-analyse, zoals het herzien van licentieconfiguraties of het aanscherpen van monitoring. Zo wordt voorkomen dat Secure Score-optimalisatie verandert in een vinkjesoefening; het blijft een lerend proces waarin data en vakmanschap elkaar versterken.

Ten slotte faciliteert het rapport samenwerking in de keten. Gemeenten, uitvoeringsorganisaties en ministeries kunnen elkaars rapporten importeren en vergelijken. Dit stimuleert het delen van best practices en maakt zichtbaar welke maatregelen in vergelijkbare omgevingen succesvol zijn geïmplementeerd. Wanneer een organisatie bijvoorbeeld aantoont hoe zij authenticatieverbeteringen combineerde met adoptieprogramma's, kunnen andere partijen dezelfde aanpak overnemen zonder het wiel opnieuw uit te vinden. Door rapporten in een beveiligd kennisplatform op te slaan ontstaat een collectief geheugen dat past bij de Nederlandse Baseline voor Veilige Cloud: kennisdeling, transparantie en continu verbeteren op basis van feiten. Secure Score verandert daarmee van een individuele prestatietool in een landsbreed instrument dat bijdraagt aan gezamenlijke cyberweerbaarheid.

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 Genereert een Secure Score-beoordeling, prioriteitenlijst en rapportage. .DESCRIPTION Ondersteunt het artikel content/m365/security-compliance/secure-score-optimization.json. Het script verzamelt secureScores en secureScoreControlProfiles via Microsoft Graph of maakt gebruik van voorbeelddata in DebugMode. Het resultaat is een rapportobject met trends, maturity-indicatoren, acties en auditbewijzen waarmee bestuurders en auditors direct inzicht krijgen in de voortgang van Secure Score-optimalisatie. .NOTES Filename : secure-score-optimization.ps1 Author : Nederlandse Baseline voor Veilige Cloud Created : 2025-11-27 Version : 1.0 Category : security-compliance Workload : m365 .LINK https://github.com/m365-tenant-best-practise .EXAMPLE .\secure-score-optimization.ps1 -DebugMode Voert de berekening uit met voorbeelddata en toont het rapportobject. .EXAMPLE .\secure-score-optimization.ps1 -Mode Publish -OutputPath .\secure-score.json Exporteert het rapport naar een JSON-bestand. #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph [CmdletBinding()] param( [Parameter(HelpMessage = "Gebruik voorbeelddata en sla cloudverbindingen over.")] [switch]$DebugMode, [Parameter(HelpMessage = "Bepaalt of het rapport alleen wordt getoond of ook wordt geëxporteerd.")] [ValidateSet("Assess", "Publish")] [string]$Mode = "Assess", [Parameter(HelpMessage = "Pad voor het geëxporteerde rapport wanneer -Mode Publish is gekozen.")] [string]$OutputPath ) Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' if (-not $OutputPath) { $OutputPath = Join-Path -Path (Get-Location) -ChildPath "secure-score-optimization-report.json" } Write-Host "`n============================================" -ForegroundColor Cyan Write-Host "Secure Score Optimalisatie" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "============================================`n" -ForegroundColor Cyan function Connect-SecureScoreContext { <# .SYNOPSIS Maakt verbinding met Microsoft Graph voor secureScore-data. .DESCRIPTION Slaat verbindingen over in DebugMode zodat lokale tests veilig zijn. #> [CmdletBinding()] param() if ($DebugMode) { Write-Host "DebugMode actief: Graph-verbinding wordt overgeslagen." -ForegroundColor Yellow return } $scopes = @( "SecureScores.Read.All", "Reports.Read.All", "Directory.Read.All" ) Write-Host "Verbinding maken met Microsoft Graph..." -ForegroundColor Gray Connect-MgGraph -Scopes $scopes -ErrorAction Stop | Out-Null Write-Host "Verbonden met Microsoft Graph." -ForegroundColor Green } function Get-SecureScoreDataset { <# .SYNOPSIS Haalt secureScores en controlprofielen op. .OUTPUTS PSCustomObject met scores, controles en trendinformatie. #> [CmdletBinding()] param() if ($DebugMode) { $now = Get-Date return [PSCustomObject]@{ TenantId = "Debug-Tenant" Scores = @( [PSCustomObject]@{ Created = $now.AddDays(-14); CurrentScore = 215; MaxScore = 320 }, [PSCustomObject]@{ Created = $now.AddDays(-7); CurrentScore = 228; MaxScore = 320 }, [PSCustomObject]@{ Created = $now; CurrentScore = 236; MaxScore = 320 } ) Controls = @( [PSCustomObject]@{ ControlId = "EXO_EnforceMFAAdmins" Title = "Meervoudige authenticatie voor beheerders" CurrentScore = 8 MaxScore = 10 Category = "Identity" Impact = "High" Implementation = "InProgress" LastModifiedUtc = $now.AddDays(-3) }, [PSCustomObject]@{ ControlId = "SPO_BlockLegacy" Title = "Legacy-verificatie blokkeren voor SharePoint" CurrentScore = 6 MaxScore = 10 Category = "Access" Impact = "Medium" Implementation = "Planned" LastModifiedUtc = $now.AddDays(-9) }, [PSCustomObject]@{ ControlId = "MDO_SafeLinks" Title = "Safe Links voor alle gebruikers" CurrentScore = 4 MaxScore = 10 Category = "ThreatProtection" Impact = "High" Implementation = "NotStarted" LastModifiedUtc = $now.AddDays(-21) } ) RetrievedUtc = $now.ToUniversalTime() } } Write-Verbose "Secure Scores ophalen via Microsoft Graph..." $scores = @() try { $scoresResponse = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/v1.0/security/secureScores?`$top=5&`$orderby=createdDateTime%20desc" if ($scoresResponse.value) { $scores = $scoresResponse.value | ForEach-Object { [PSCustomObject]@{ Created = Get-Date $_.createdDateTime CurrentScore= [double]$_.currentScore MaxScore = [double]$_.maxScore } } } } catch { Write-Warning "Kon secureScores niet ophalen: $_" } Write-Verbose "Controlprofielen ophalen..." $controls = @() try { $controlsResponse = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/v1.0/security/secureScoreControlProfiles?`$top=50" if ($controlsResponse.value) { $controls = $controlsResponse.value | ForEach-Object { [PSCustomObject]@{ ControlId = $_.id Title = $_.title CurrentScore = [double]$_.currentScore MaxScore = [double]$_.maxScore Category = $_.controlCategory Impact = $_.impact Implementation = $_.implementationStatus LastModifiedUtc = if ($_.lastModifiedDateTime) { Get-Date $_.lastModifiedDateTime } else { $null } } } } } catch { Write-Warning "Kon controlprofielen niet ophalen: $_" } return [PSCustomObject]@{ TenantId = (Get-MgContext).TenantId Scores = $scores Controls = $controls RetrievedUtc = (Get-Date).ToUniversalTime() } } function Invoke-SecureScoreAssessment { <# .SYNOPSIS Berekent maturiteit, momentum en prioriteiten. .PARAMETER Dataset Resultaat van Get-SecureScoreDataset. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [pscustomobject]$Dataset ) if (-not $Dataset.Scores -or $Dataset.Scores.Count -eq 0) { throw "Geen scoregegevens ontvangen." } $latest = $Dataset.Scores | Sort-Object Created -Descending | Select-Object -First 1 $earliest = $Dataset.Scores | Sort-Object Created | Select-Object -First 1 $percentage = if ($latest.MaxScore -gt 0) { [math]::Round(($latest.CurrentScore / $latest.MaxScore) * 100, 2) } else { 0 } $momentum = [math]::Round($latest.CurrentScore - $earliest.CurrentScore, 2) $maturity = switch ($percentage) { {$_ -ge 80} { "Geoptimaliseerd"; break } {$_ -ge 60} { "Gestabiliseerd"; break } {$_ -ge 40} { "In transitie"; break } default { "Fundament opbouwen" } } $highImpactControls = $Dataset.Controls | Where-Object { $_.Impact -eq "High" -and ($_.CurrentScore -lt $_.MaxScore) } | Sort-Object {$_.MaxScore - $_.CurrentScore} -Descending | Select-Object -First 10 $gaps = $highImpactControls | ForEach-Object { "{0} ({1}) mist {2} punten" -f $_.Title, $_.ControlId, ([math]::Round($_.MaxScore - $_.CurrentScore, 2)) } if (-not $gaps) { $gaps = @("Geen hiaten gevonden binnen de top-10 high impact-controls.") } return [PSCustomObject]@{ Percentage = $percentage MaturityLevel = $maturity MomentumPoints = $momentum PriorityGaps = $gaps HighImpactControls = $highImpactControls } } function Get-SecureScoreImprovementPlan { <# .SYNOPSIS Genereert acties, rollen en auditbewijzen. .PARAMETER Dataset Secure Score dataset. .PARAMETER Assessment Maturityresultaat. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [pscustomobject]$Dataset, [Parameter(Mandatory = $true)] [pscustomobject]$Assessment ) $actions = @( "Koppel Secure Score-resultaten aan het risicoregister en documenteer acceptaties.", "Veranker prioritaire controls in change management met duidelijke eigenaarschap.", "Publiceer maandelijkse datakwaliteitsoverzichten richting governanceboard." ) if ($Assessment.Percentage -lt 60) { $actions += "Plan een versnellingstraject voor high impact-controls en rapporteer wekelijks over voortgang." } $roles = @( "CISO-office", "Tenant-beheerteam", "FG / Privacy Officer", "Portfolioboard" ) $evidence = @( "secure-score-optimization-report.json", "Vergadernotulen van het Secure Score-governanceboard", "Change- en testbewijzen voor prioritaire maatregelen" ) return [PSCustomObject]@{ RecommendedActions = $actions ResponsibleRoles = $roles EvidenceChecklist = $evidence NextReviewWeeks = if ($Assessment.Percentage -ge 80) { 8 } else { 4 } } } function Publish-SecureScoreOptimizationReport { <# .SYNOPSIS Bouwt het rapport en exporteert optioneel naar JSON. #> [CmdletBinding()] param() $dataset = Get-SecureScoreDataset $assessment = Invoke-SecureScoreAssessment -Dataset $dataset $plan = Get-SecureScoreImprovementPlan -Dataset $dataset -Assessment $assessment $report = [PSCustomObject]@{ GeneratedAtUtc = (Get-Date).ToUniversalTime() DebugMode = [bool]$DebugMode TenantId = $dataset.TenantId Scores = $dataset.Scores Controls = $dataset.Controls Assessment = $assessment ImprovementPlan= $plan } if ($Mode -eq "Publish") { Write-Verbose "Rapport exporteren naar $OutputPath" $report | ConvertTo-Json -Depth 6 | Set-Content -Path $OutputPath -Encoding UTF8 } return $report } try { Connect-SecureScoreContext $result = Publish-SecureScoreOptimizationReport $result exit 0 } catch { Write-Error "Fout tijdens Secure Score-optimalisatie: $_" exit 1 } finally { Write-Host "`n============================================`n" -ForegroundColor Cyan } # Exitcodes # 0 = Succes # 1 = Fout tijdens uitvoering

Risico zonder implementatie

Risico zonder implementatie
Medium: Zonder centrale regie verwatert Secure Score tot een cijfer zonder bestuurlijke betekenis, waardoor audits negatieve bevindingen opleveren en risico's pas aan het licht komen bij incidenten.

Management Samenvatting

Koppel Secure Score aan governance, gebruik het script `secure-score-optimization.ps1` voor datagedreven prioritering en lever consistente rapportages aan bestuurders en toezichthouders.