CISO-competenties Voor Bestuurbare Microsoft 365-governance

💼 Management Samenvatting

De Chief Information Security Officer (CISO) vormt de bestuurlijke ruggengraat van Microsoft 365-beveiliging binnen de Nederlandse overheid. Competenties gaan verder dan technische kennis alleen; een CISO moet politieke sensitiviteit koppelen aan diepgaande cloudkennis om bestuurders, toezichthouders en auditors van betrouwbare beslisinformatie te voorzien.

Aanbeveling
IMPLEMENT
Risico zonder
Hoog
Risk Score
8/10
Implementatie
260u (tech: 120u)
Van toepassing op:
Microsoft 365
Entra ID
Microsoft Defender
Microsoft Purview
Nederlandse publieke sector
Rijksdienst
Gemeenten

Wet- en regelgeving zoals BIO, AVG en NIS2 leggen bestuurlijke verantwoordelijkheid voor digitale veiligheid nadrukkelijk bij de top van de organisatie. Bestuurders kunnen deze verantwoordelijkheid alleen dragen wanneer de CISO hen continu voedt met feiten, duiding en handelingsperspectief. Veel organisaties hebben wel een CISO-titel belegd, maar beschikken niet over een onderbouwd competentieprofiel, geen ontwikkelpad en geen meetlat om te bepalen of de CISO-functie daadwerkelijk invulling geeft aan de eisen uit rijksbrede kaders. Het gevolg is dat Microsoft 365-besluiten worden vertraagd of op aannames worden gebaseerd, auditbevindingen blijven liggen en incidentrespons politiek escaleert.

PowerShell Modules Vereist
Primary API: Microsoft Graph Security, Microsoft 365 Management Activity API, Microsoft Purview Compliance API, Microsoft Defender for Cloud Apps
Connection: Connect-MgGraph, Connect-IPPSSession, Connect-MDE, Connect-MgAuditLog
Required Modules: Microsoft.Graph, ExchangeOnlineManagement, Az.Accounts, Defender

Implementatie

Dit artikel schetst een volledig competentieraamwerk voor CISO’s die Microsoft 365 binnen de Nederlandse Baseline voor Veilige Cloud moeten besturen. We behandelen de bestuurlijke opdracht, de samenstelling van het competentieprofiel, de meetmethoden en de manier waarop ontwikkelprogramma’s worden verankerd in HR- en governanceprocessen. Het bijbehorende PowerShell-script helpt organisaties om gegevens uit Microsoft Graph en auditlogs te verzamelen, zodat competenties niet alleen kwalitatief maar ook met objectieve indicatoren worden aangetoond tijdens lokale debugtests en formele beoordelingen.

Bestuurlijke opdracht en verwachtingen van de CISO

Een CISO binnen de Nederlandse publieke sector opereert niet als geïsoleerde securityspecialist, maar als strategische sparringpartner van de bestuursraad. Dat betekent dat de functie wordt verankerd in mandaten, rapportagelijnen en escalatiepaden die net zo formeel zijn vastgelegd als de mandaten van de controller of CIO. Het competentieprofiel begint daarom bij bestuurlijke autoriteit: de CISO moet de bevoegdheid hebben om Microsoft 365-implementaties te pauzeren wanneer BIO- of NIS2-vereisten niet aantoonbaar worden geborgd, moet rechtstreeks toegang krijgen tot besluitvormende gremia en moet kunnen afdwingen dat risicoacceptaties schriftelijk worden vastgelegd. Zonder dat mandaat verwordt de functie tot een adviserende rol zonder doorzettingsmacht, waardoor cruciale signalen over identity-hygiëne, data-inzichten of incidentrespons niet tijdig tot bestuursbesluiten leiden.

De Nederlandse Baseline voor Veilige Cloud vereist dat de CISO de vertaalslag maakt tussen technische feiten en maatschappelijke opdracht. Dat vraagt om drie kerncompetenties: stelselkennis, beleidsintelligentie en Microsoft 365-expertise. Stelselkennis houdt in dat de CISO exact weet hoe Rijksbrede kaders, sectorale regelingen en lokale verordeningen op elkaar aansluiten. Beleidsintelligentie betekent dat de CISO begrijpt hoe bestuurlijke agenda’s tot stand komen, welke politieke gevoeligheden meespelen en hoe informatievoorziening in vergadercycli landt. Microsoft 365-expertise tenslotte borgt dat de CISO niet afhankelijk is van incidentele spreadsheets, maar zelf kan beoordelen of configuraties, scripts en rapportages voldoen aan technische best practices. Deze drie competenties moeten onlosmakelijk met elkaar verbonden zijn; een CISO die alleen beleidstaal spreekt maar de technische impact van een Exchange Online-instelling niet kan duiden, zal bestuurders niet overtuigen.

Bestuurders verlangen bovendien transparantie over de manier waarop de CISO-functie is bemenst en ondersteund. Dat betekent dat het competentieprofiel altijd wordt gekoppeld aan een specifiek team, inclusief deputy CISO, architecten en risicoadviseurs. Voor Microsoft 365-governance draait het om de capaciteit om signalen uit Secure Score, Purview, Defender en operationele logs te combineren tot één verhaallijn. Het profiel beschrijft daarom welke vaardigheden nodig zijn om dashboards te interpreteren, scenario-analyses op te stellen en adviezen te onderbouwen aan de hand van bewijs. Bestuurders willen niet alleen horen dat een maatregel nodig is, maar ook welke KPI’s veranderen, hoe dat zich verhoudt tot wettelijke verplichtingen en welke budgettaire gevolgen verbonden zijn aan de voorgestelde interventies.

Een volwassen competentieprofiel benoemt daarnaast soft skills die vaak onderbelicht blijven. De CISO moet crisiscommunicatie kunnen voeren tijdens incidenten, moet het vertrouwen genieten van ondernemingsraad en vakbonden wanneer maatregelen personele impact hebben, en moet kunnen onderhandelen met leveranciers over contractuele security-eisen. In Microsoft 365-context betekent dit bijvoorbeeld dat de CISO moet kunnen toelichten waarom bepaalde Copilot-functies tijdelijk worden uitgeschakeld of waarom externe gasttoegang strakker wordt ingericht. Daarbij hoort het vermogen om juridische, operationele en technische argumenten logisch te verbinden, zodat bestuurders zien dat een maatregel proportioneel is en past binnen het risicobeeld.

Tot slot vormt integriteit een expliciete competency. De CISO onderhoudt toegang tot gevoelige rapportages, incidentdossiers en auditinformatie. Het profiel moet daarom eisen stellen aan vertrouwelijkheid, onafhankelijkheid en toetsbaarheid. Een periodieke fit-and-proper toets, vergelijkbaar met financiële toezichthouders, helpt om te borgen dat de CISO geen belangenconflicten heeft, voldoende vakbekwaam is gebleven en beschikt over een actueel kennisniveau van Microsoft 365 evoluties. Door dit expliciet te verankeren in de governance, tonen organisaties richting toezichthouders, parlement en ombudsinstituten aan dat digitale veiligheid niet alleen technisch maar ook bestuurlijk volwassen wordt aangestuurd.

Competentieraamwerk en rolarchitectuur

Het ontwerpen van een competentieraamwerk vraagt om een methodische aanpak waarin het Microsoft 365-landschap, de wettelijke kaders en de interne besluitvormingsstructuur samenkomen. Start met het inventariseren van de meest kritieke waardestromen: identiteiten, data, detectie, samenwerking en leveranciers. Voor elk van deze stromen beschrijft u welke beslissingen de CISO moet kunnen nemen, welke data daarvoor nodig is en hoe vaak die beslissingen terugkomen. Op basis daarvan definieert u kerncompetenties zoals “Data-gedreven besluitvorming op Purview-signalering” of “Strategische regie op identiteitsmodernisering”. Deze competenties worden uitgewerkt naar kennis (bijvoorbeeld kennis van KPMG Assurance-rapporten), vaardigheden (bijvoorbeeld kritisch doorvragen op Secure Score-residuen) en verantwoordelijkheden (bijvoorbeeld verplicht escaleren naar bestuur binnen twee werkdagen).

Vervolgens koppelt u het raamwerk aan een rolarchitectuur binnen de CISO-organisatie. Dat betekent dat u per functie – CISO, deputy, domeinleads, CISO Office analisten – vastlegt welke competenties primair, secundair of ondersteunend zijn. Zo kan de CISO zich richten op bestuurlijke escalaties en strategische keuzes, terwijl domeinleads de diepgaande technische en operationele analyses uitvoeren. Toch moet iedere rol in staat zijn om Microsoft 365-gegevens te lezen en te interpreteren; daarom bevat het raamwerk verplichte kennismodules, bijvoorbeeld over Graph-permissions, Purview-etikettering of Intune compliance. Door deze modules te koppelen aan onboarding en jaarlijkse bijscholing ontstaat een levend raamwerk dat meegroeit met platforminnovaties.

Een cruciaal element is de koppeling met HR-processen. Competenties moeten onderdeel zijn van functiebeschrijvingen, beoordelingsgesprekken en beloningsstructuren. Dat betekent dat het raamwerk vertaald wordt naar concrete gedragsindicatoren. Voorbeeld: “de CISO levert elk kwartaal een risicobrief aan de bestuursraad die grafieken uit Microsoft 365 Management API combineert met beleidsconclusies.” Door dit vast te leggen in HR-systemen ontstaat een meetlat waarmee bestuurders objectief kunnen beoordelen of de rol daadwerkelijk wordt ingevuld. Tegelijkertijd krijgt de CISO helderheid over verwachtingen, ontwikkelpaden en benodigde ondersteuning, wat de aantrekkelijkheid van de functie vergroot in een krappe arbeidsmarkt.

Technologie ondersteunt het raamwerk met tooling voor bewijsvoering. Hier komt het bijgeleverde script in beeld: het verzamelt indicatoren over rapportagefrequentie, volledigheid van datasets, aanwezigheid van auditlogs en kwaliteit van escalatieverslagen. Deze indicatoren worden direct gekoppeld aan competenties. Wanneer de CISO bijvoorbeeld moet aantonen dat rapportages tijdig worden geleverd, toont het script de doorlooptijd tussen detectie en publicatie. Wanneer het competentieprofiel vereist dat de CISO data-inzichten vertaalt naar besluitvorming, kan het script laten zien hoeveel besluiten zijn voorzien van bewijs uit Microsoft Defender of Purview. Zo wordt de competency niet langer subjectief, maar aantoonbaar door meetgegevens.

Tot slot moet het raamwerk rekening houden met interbestuurlijke samenwerking. Veel Nederlandse overheden werken in shared services of ketensamenwerkingen waarin meerdere CISO’s of security leads betrokken zijn. Het raamwerk beschrijft daarom hoe de CISO namens de organisatie deelneemt aan sectorale overleggen, hoe informatie wordt gedeeld binnen ISAC’s en hoe escalatiepaden verlopen bij incidenten die meerdere organisaties raken. Dit vraagt om competenties rondom diplomatie, juridisch inzicht in gegevensuitwisseling en beheersing van gezamenlijke tooling zoals samenwerkingsdashboards of centrale logplatformen. Door deze elementen expliciet op te nemen, wordt de rol toekomstvast en afgestemd op de realiteit van ketenafhankelijkheden.

Meten, benchmarken en aantonen van competenties

Gebruik PowerShell-script ciso-competencies.ps1 (functie Invoke-CisoCompetencyAssessment) – Bouwt een competentiescorecard op basis van Microsoft 365-data, auditlogs en bestuurlijke metadata.

Competenties worden pas geloofwaardig wanneer ze aantoonbaar zijn. Daarom introduceert dit artikel een meetmodel dat zowel kwalitatieve als kwantitatieve signalen bundelt. Het model bestaat uit vier dimensies: datavaardigheid, bestuurlijke effectiviteit, responstijd en compliance-bewijs. Voor iedere dimensie definieert u indicatoren die via het script automatisch kunnen worden verzameld. Denk aan het percentage risicorapportages dat actuele telemetry uit Graph bevat, het aantal bestuursoverleggen waarbij de CISO adviesrecht uitoefent, de gemiddelde tijd tussen incident-detectie en escalatie richting bestuur, en de volledigheid van auditdossiers. Door deze indicatoren te normaliseren naar een score van nul tot honderd ontstaat een scorecard waarmee bestuurders en auditors in één oogopslag zien hoe volwassen de CISO-functie is.

Benchmarking gebeurt door de eigen scorecard te vergelijken met referentiewaarden. Deze referenties kunnen afkomstig zijn uit rijksbrede programma’s, sectorale samenwerkingen of externe audits. Wanneer referentiewaarden ontbreken, gebruikt u interne trendanalyses: hoe ontwikkelt de competentiescore zich per kwartaal, welke dimensies stijgen of dalen, en welke maatregelen beïnvloeden de scores het sterkst. Door scorecards jaarlijks te delen met de auditcommissie of externe toezichthouder ontstaat transparantie en kan men gericht vragen stellen. Het voorkomt discussies op basis van gevoel en zorgt dat investeringen in opleidingsprogramma’s of tooling worden onderbouwd met data.

Het meetmodel moet echter altijd voorzien zijn van kwalitatieve toelichting. Cijfers zonder context leiden tot verkeerde conclusies. Daarom bevat de scorecard beschrijvende velden waarin de CISO uitlegt welke factoren tot de huidige score hebben geleid, welke risicoacceptaties zijn genomen en welke verbeteracties lopen. Voor Microsoft 365 betekent dit dat u bijvoorbeeld vermeldt dat een lagere datavaardigheidsscore tijdelijk komt doordat nieuwe Purview-functionaliteit nog niet is ingevoerd, of dat een hogere responstijd samenhangt met een reorganisatie binnen het SOC. Deze toelichting maakt de scorecard bruikbaar voor besluitvorming en voorkomt dat cijfers uit hun context worden gehaald tijdens politieke debatten.

Materiële bewijslast is essentieel richting auditors. Het script genereert daarom een export die logbestanden, rapportages, beleidsbesluiten en opleidingsregistraties bundelt. Elk record krijgt metadata mee zoals bron, datum, verantwoordelijke en gerelateerde controle. Hierdoor ontstaat een audittrail waarmee u kunt aantonen dat competenties niet alleen op papier bestaan, maar daadwerkelijk zijn toegepast in processen. Bijvoorbeeld: de competentie “crisiscommunicatie” wordt onderbouwd met verslagen van crisisteams, opgenomen beslissingen en de tijdlijn van berichtgeving. De competentie “datavaardigheid” wordt onderbouwd met scriptuitvoer die laat zien dat rapportages geautomatiseerd worden gevoed met actuele telemetrie. Op deze manier wordt het competentieprofiel onderdeel van het controlesysteem.

Tot slot verbindt u het meetmodel aan besluitvorming over personele ontwikkeling. Scores onder een vooraf bepaalde drempel leiden automatisch tot concrete acties, zoals aanvullende opleiding, het aantrekken van specialistische ondersteuning of het formaliseren van een plaatsvervanger. Door deze beslissystematiek vooraf te beschrijven, voorkomt u dat competentiemetingen worden gezien als vrijblijvende exercitie. Het zorgt er tevens voor dat bestuurders kunnen aantonen dat zij actief toezicht houden op de bekwaamheid van hun CISO, wat een expliciete eis is binnen NIS2 artikel 20 en de BIO-paragrafen over managementverantwoordelijkheid.

Operationalisering en continue ontwikkeling

Gebruik PowerShell-script ciso-competencies.ps1 (functie Publish-CisoCompetencyReport) – Publiceert een compleet rapport inclusief scorecard, trendanalyse en aanbevelingen voor ontwikkelacties.

Een competentieraamwerk heeft pas waarde wanneer het wordt geïntegreerd in de werkpraktijk. Operationalisering begint bij een vaste cadans: maandelijkse operationele sessies waarin telemetry en incidenten worden besproken, kwartaalgesprekken met bestuur en halfjaarlijkse evaluaties met HR. In elk van deze sessies wordt de scorecard gebruikt als startpunt, waarna kwalitatieve observaties en externe signalen worden toegevoegd. Het bijbehorende script ondersteunt deze cadans door automatisch runs in te plannen, resultaten in JSON of CSV te exporteren en lokale debugruns mogelijk te maken wanneer nieuwe indicatoren worden getest. Zo blijft het meetproces lichtgewicht terwijl audittrail behouden blijft.

Continue ontwikkeling vraagt om meer dan incidentele trainingen. De CISO-organisatie stelt een leeragenda op waarin technische innovaties (zoals nieuwe Defender-capabilities), wetswijzigingen en bestuurlijke thema’s worden vertaald naar concrete leerdoelen. Deze leeragenda wordt gekoppeld aan het raamwerk zodat zichtbaar is welke competenties worden versterkt. De organisatie reserveert tijd en budget voor deep dives, scenario-oefeningen en peer reviews met andere overheden. Door ontwikkelactiviteiten te registreren in hetzelfde systeem als de scorecard ontstaat inzicht in de effectiviteit van opleidingsinvesteringen; stijgende scores kunnen worden gekoppeld aan specifieke interventies zodat bestuurders zien welke maatregelen werken.

Verandering in het Microsoft 365-landschap vereist dat het competentieraamwerk flexibel blijft. Daarom plant u jaarlijkse herijkingen waarin u toetst of de huidige competenties nog aansluiten op de feitelijke risico’s en technologische ontwikkelingen. Bij de introductie van Copilot, Fabric of nieuwe compliancefuncties kan het nodig zijn om nieuwe competenties toe te voegen of bestaande te herwaarderen. Deze herijking gebeurt in samenwerking met architectuur- en privacyteams zodat het raamwerk integraal blijft. Besluiten over wijzigingen worden vastgelegd in het script-exportbestand, inclusief motivatie en impact op lopende ontwikkelprogramma’s. Zo blijft de audittrail intact terwijl het raamwerk meegaat met innovatie.

Operationalisering raakt ook leveranciers en ketenpartners. De CISO moet kunnen aantonen welke competenties worden uitbesteed en hoe toezicht op leveranciers wordt georganiseerd. Denk aan scenario’s waarin een externe SOC-dienst verantwoordelijk is voor detectie: het raamwerk beschrijft dan welke competenties intern nodig blijven (bijvoorbeeld contractuele sturing en interpretatie van rapportages) en hoe de CISO toezicht houdt op dienstverleners. Door dit procesmatig te borgen worden risico’s van afhankelijkheid gemitigeerd en kan de organisatie tijdens audits laten zien dat uitbestede taken niet leiden tot verlies van regie.

Tenslotte verdient mentale veerkracht aandacht. CISO’s opereren onder hoge druk, zeker wanneer Microsoft 365-incidenten frontpagina nieuws worden. Het competentieprofiel verankert daarom ondersteuning zoals coaching, collegiale consultatie en toegang tot vertrouwenspersonen. Deze component wordt vaak over het hoofd gezien, maar is cruciaal om continuïteit te waarborgen en het risico op uitval te verminderen. Door dit formeel op te nemen in governance-documenten en het script te laten registreren of ondersteuning daadwerkelijk plaatsvindt, laat de organisatie zien dat zij zorg draagt voor de mensen achter de functie en investeert in duurzame digitale veiligheid.

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 Meet en rapporteer CISO-competenties voor Microsoft 365-governance. .DESCRIPTION Het script ondersteunt het artikel "CISO-competenties voor bestuurbare Microsoft 365-governance". Het voert twee hoofdhandelingen uit: - Invoke-CisoCompetencyAssessment : bouwt een scorecard-object op basis van Microsoft 365-data - Publish-CisoCompetencyReport : exporteert dezelfde scorecard naar JSON voor audits DebugMode gebruikt voorbeelddata zodat lokale tests binnen 15 seconden draaien zonder cloudverbinding. .NOTES Filename : ciso-competencies.ps1 Author : Nederlandse Baseline voor Veilige Cloud Created : 2025-11-27 Version : 1.0 JSON : content/m365/governance/ciso-competencies.json Workload : Microsoft 365 - Governance Required : Microsoft.Graph, ExchangeOnlineManagement, Defender, Az.Accounts .LINK https://github.com/m365-tenant-best-practise .EXAMPLE .\ciso-competencies.ps1 -DebugMode Voert een lokale validatie uit met voorbeelddata. .EXAMPLE .\ciso-competencies.ps1 -Function Publish-CisoCompetencyReport -OutputPath .\ciso-scorecard.json Bouwt de scorecard op en exporteert deze naar het opgegeven pad. #> #Requires -Version 5.1 [CmdletBinding()] param( [Parameter(HelpMessage = "Voer een lokale testsessie uit zonder verbinding te maken.")] [switch]$DebugMode, [Parameter(HelpMessage = "Bepaalt welke functie wordt uitgevoerd.")] [ValidateSet("Invoke-CisoCompetencyAssessment", "Publish-CisoCompetencyReport")] [string]$Function = "Invoke-CisoCompetencyAssessment", [Parameter(HelpMessage = "Bestandspad voor het rapport wanneer Publish-CisoCompetencyReport wordt gebruikt.")] [string]$OutputPath ) Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' if (-not $OutputPath) { $OutputPath = Join-Path -Path (Get-Location) -ChildPath "ciso-competencies-export.json" } Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "CISO-Competencies (M365 Governance)" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Connect-CisoGovernanceContext { <# .SYNOPSIS Maakt verbinding met Microsoft 365-services. .DESCRIPTION Verbindt met Microsoft Graph, Purview en Defender. In DebugMode worden geen verbindingen opgezet. #> [CmdletBinding()] param() if ($DebugMode) { Write-Verbose "DebugMode: verbindingen worden overgeslagen." return } try { $scopes = @( "Reports.Read.All", "Policy.Read.All", "SecurityEvents.Read.All", "AuditLog.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 } catch { Write-Warning "Graph-verbinding mislukt: $_" } try { Write-Host "Verbinding maken met Exchange Online (auditlog)..." -ForegroundColor Gray Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop | Out-Null Write-Host "Verbonden met Exchange Online." -ForegroundColor Green } catch { Write-Warning "Exchange Online-verbinding mislukt: $_" } Write-Verbose "Auditloggegevens worden via bestaande Graph-sessies opgehaald." } function Get-ReportCadenceStatus { <# .SYNOPSIS Haalt statistieken op over bestuursrapportages. #> [CmdletBinding()] param() if ($DebugMode) { return [PSCustomObject]@{ QuarterlyReports = 4 LateReports = 0 AveragePublishingHours = 36 EvidencePackages = 18 StorytellingConfidence = 92 LastSubmission = (Get-Date).AddDays(-8) } } Write-Verbose "Rapportage-indicatoren verzamelen..." # Placeholder voor echte queries; vul later met Graph-rapportagecalls. return [PSCustomObject]@{ QuarterlyReports = 0 LateReports = 0 AveragePublishingHours = 0 EvidencePackages = 0 StorytellingConfidence = 0 LastSubmission = $null } } function Get-IncidentEscalationMetrics { <# .SYNOPSIS Meet incident- en escalatieprestaties. #> [CmdletBinding()] param() if ($DebugMode) { return [PSCustomObject]@{ IncidentsReviewed = 27 CriticalIncidents = 3 MeanTimeToEscalateHours = 4.5 MeanTimeToDecideHours = 11.2 CrisisExercisesPerYear = 3 Notes = "Bestuurlijke escalaties binnen norm; oefening Q3 voltooid." } } Write-Verbose "Incidentgegevens verzamelen..." return [PSCustomObject]@{ IncidentsReviewed = 0 CriticalIncidents = 0 MeanTimeToEscalateHours = 0 MeanTimeToDecideHours = 0 CrisisExercisesPerYear = 0 Notes = "Geen gegevens" } } function Get-CompetencySignals { <# .SYNOPSIS Haalt gegevens op over opleidingen en competenties. #> [CmdletBinding()] param() if ($DebugMode) { return [PSCustomObject]@{ CompletedTrainings = 6 OpenTrainingActions = 2 VendorEngagements = 5 ISACSessions = 4 PolicyUpdates = 7 ScorecardTrend = "Stijgend" } } Write-Verbose "Competentiesignalen verzamelen..." return [PSCustomObject]@{ CompletedTrainings = 0 OpenTrainingActions = 0 VendorEngagements = 0 ISACSessions = 0 PolicyUpdates = 0 ScorecardTrend = "Onbekend" } } function Get-AuditEvidenceStatus { <# .SYNOPSIS Controleert of auditbewijzen aanwezig zijn. #> [CmdletBinding()] param() if ($DebugMode) { return [PSCustomObject]@{ EvidencePackagesReady = $true OutstandingFindings = 1 RetentionCompliance = 100 DocumentationCoverage = 95 NextAuditWindow = (Get-Date).AddMonths(2) } } Write-Verbose "Auditbewijzen controleren..." return [PSCustomObject]@{ EvidencePackagesReady = $false OutstandingFindings = 0 RetentionCompliance = 0 DocumentationCoverage = 0 NextAuditWindow = $null } } function New-CisoCompetencyModel { <# .SYNOPSIS Combineert bronnen tot één scorecard. #> [CmdletBinding()] param( [Parameter(Mandatory)] [pscustomobject]$Reporting, [Parameter(Mandatory)] [pscustomobject]$Incidents, [Parameter(Mandatory)] [pscustomobject]$Competencies, [Parameter(Mandatory)] [pscustomobject]$Audit ) $score = [PSCustomObject]@{ DataFluency = [Math]::Round(($Reporting.StorytellingConfidence + $Competencies.PolicyUpdates) / 2, 2) GovernanceImpact = [Math]::Round(100 - ($Reporting.LateReports * 8), 2) ResponseAgility = if ($Incidents.MeanTimeToEscalateHours -gt 0) { [Math]::Round(100 - ($Incidents.MeanTimeToEscalateHours * 5), 2) } else { 0 } EvidenceReadiness = if ($Audit.EvidencePackagesReady) { 95 } else { 40 } } return [PSCustomObject]@{ Script = "ciso-competencies.ps1" GeneratedAt = Get-Date DebugMode = [bool]$DebugMode Reporting = $Reporting Incidents = $Incidents Competencies = $Competencies Audit = $Audit Scores = $score Narrative = [PSCustomObject]@{ Highlights = @( "Rapportages geleverd: $($Reporting.QuarterlyReports)", "Escalaties binnen uren: $([Math]::Round($Incidents.MeanTimeToEscalateHours,2))", "Auditgereed: $($Audit.EvidencePackagesReady)" ) NextSteps = @( "Actualiseer open trainingen: $($Competencies.OpenTrainingActions)", "Plan crisisoefening om incidentagiliteit te toetsen", "Review outstanding findings: $($Audit.OutstandingFindings)" ) } Metadata = [PSCustomObject]@{ Owner = "CISO-office" Contact = "ciso@organisatie.nl" Timezone = (Get-TimeZone).Id ExportVersion = "1.0" } } } function Invoke-CisoCompetencyAssessment { <# .SYNOPSIS Bouwt de competentiescorecard. .OUTPUTS PSCustomObject #> [CmdletBinding()] param() Connect-CisoGovernanceContext Write-Host "`nScorecard samenstellen..." -ForegroundColor Yellow Write-Host "----------------------------------------" -ForegroundColor Yellow $reporting = Get-ReportCadenceStatus $incidents = Get-IncidentEscalationMetrics $competencies = Get-CompetencySignals $audit = Get-AuditEvidenceStatus $model = New-CisoCompetencyModel -Reporting $reporting -Incidents $incidents -Competencies $competencies -Audit $audit Write-Host "`nSamenvatting:" -ForegroundColor Green Write-Host " Datafluency score : $($model.Scores.DataFluency)" -ForegroundColor Cyan Write-Host " Governance impact : $($model.Scores.GovernanceImpact)" -ForegroundColor Cyan Write-Host " Response agility : $($model.Scores.ResponseAgility)" -ForegroundColor Cyan Write-Host " Evidence readiness : $($model.Scores.EvidenceReadiness)" -ForegroundColor Cyan return $model } function Publish-CisoCompetencyReport { <# .SYNOPSIS Exporteert de scorecard naar JSON. .OUTPUTS PSCustomObject #> [CmdletBinding()] param() $model = Invoke-CisoCompetencyAssessment $resolvedPath = (Resolve-Path -Path $OutputPath -ErrorAction SilentlyContinue) if (-not $resolvedPath) { $directory = Split-Path -Path $OutputPath -Parent if ($directory -and -not (Test-Path -Path $directory)) { New-Item -Path $directory -ItemType Directory -Force | Out-Null } $resolvedPath = Resolve-Path -Path $OutputPath -ErrorAction SilentlyContinue } $target = if ($resolvedPath) { $resolvedPath.Path } else { [System.IO.Path]::GetFullPath($OutputPath) } $model | ConvertTo-Json -Depth 10 | Out-File -FilePath $target -Encoding UTF8 Write-Host "`nScorecard geëxporteerd naar $target" -ForegroundColor Green return [PSCustomObject]@{ Script = "ciso-competencies.ps1" Function = "Publish-CisoCompetencyReport" ExportPath = $target FileSizeKB = [Math]::Round(((Get-Item -Path $target).Length / 1KB), 2) GeneratedAt = $model.GeneratedAt DebugMode = [bool]$DebugMode } } try { $result = switch ($Function) { "Invoke-CisoCompetencyAssessment" { Invoke-CisoCompetencyAssessment } "Publish-CisoCompetencyReport" { Publish-CisoCompetencyReport } } Write-Verbose "Functie $Function afgerond." return $result } catch { Write-Error "Er is een fout opgetreden: $_" throw } finally { if (-not $DebugMode) { if (Get-Command -Name Disconnect-ExchangeOnline -ErrorAction SilentlyContinue) { Disconnect-ExchangeOnline -Confirm:$false -ErrorAction SilentlyContinue | Out-Null } if (Get-Command -Name Disconnect-MgGraph -ErrorAction SilentlyContinue) { Disconnect-MgGraph -ErrorAction SilentlyContinue | Out-Null } } Write-Host "`nKlaar." -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
Hoog: Zonder competentieraamwerk ontbreekt zicht op de bekwaamheid van de CISO, worden Microsoft 365-besluiten niet onderbouwd en staat de organisatie zwak bij incidenten en audits.

Management Samenvatting

Leg een formeel CISO-competentieprofiel vast, meet het met geautomatiseerde scorecards en verbind de resultaten aan bestuur, HR en ontwikkelprogramma’s. Zo ontstaat aantoonbare regie op Microsoft 365-risico’s en voldoet de organisatie aan de Nederlandse Baseline voor Veilige Cloud.