Teamontwikkeling Voor Microsoft 365 Incident Response

💼 Management Samenvatting

Een volwassen incident response-team voor Microsoft 365 ontstaat niet vanzelf; het is het resultaat van gericht talentmanagement, duidelijke rolprofielen en continue ontwikkeling. Teamontwikkeling gaat daarom verder dan het invullen van roosters. Het bouwt aan een multidisciplinair collectief dat signalen uit Microsoft 365 begrijpt, snel kan handelen onder druk en in staat is om bestuurders betrouwbaar te adviseren.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
84u (tech: 24u)
Van toepassing op:
Microsoft 365
Security Operations
Nederlandse overheidsorganisaties

Nederlandse overheidsorganisaties vertrouwen op Microsoft 365 voor besluitvorming, vertrouwelijke communicatie en dienstverlening aan burgers. Dreigingen zoals accountcompromittering, datalekken en gerichte ransomwarecampagnes richten zich rechtstreeks op deze omgeving. Zonder een goed ingericht incident response-team blijven waarschuwingen liggen, wordt escalatie vertraagd en raakt de organisatie het overzicht kwijt tijdens een crisis. De BIO, NIS2 en AVG eisen aantoonbaar deskundige teams, maar in de praktijk blijkt dat personeelsverloop, krapte op de arbeidsmarkt en versnipperde taken leiden tot kennishiaten. Teamontwikkeling brengt structuur: functies worden gekoppeld aan noodzakelijke competenties, trainingstrajecten worden geborgd en kennisdeling wordt onderdeel van de normale operatie. Zo ontstaat een veerkrachtig team dat bestand is tegen personeelswisselingen en dat elke nieuwe aanvalsgolf kan beantwoorden met bewezen vaardigheden.

PowerShell Modules Vereist
Primary API: Microsoft 365 Defender & Entra ID portals
Connection: Browser + optionele PowerShell-rapportage
Required Modules:

Implementatie

Dit artikel beschrijft hoe je teamontwikkeling voor Microsoft 365 incident response organiseert als integraal onderdeel van de "Nederlandse Baseline voor Veilige Cloud". We behandelen het opstellen van een competentieraamwerk, het inrichten van werving, opleiding en retentie, de integratie met dagelijkse SOC-activiteiten en het meten van volwassenheid. Elk onderdeel wordt uitgewerkt als volwaardig hoofdstuk, zodat security officers, HR-partners, teamleads en bestuurders exact weten welke stappen nodig zijn om een duurzaam incident response-team te bouwen. Het gekoppelde PowerShell-script ondersteunt governance door inzicht te geven in bezetting, certificeringen en opleidingsvoortgang.

Competentieraamwerk en rolontwerp

Een solide teamontwikkeling start met een helder raamwerk van rollen, competenties en verantwoordelijkheden. Voor Microsoft 365 incident response betekent dit dat functies niet alleen op functietitel worden beschreven, maar op concrete capaciteiten: kennis van Entra ID-signalen, vaardigheid in KQL voor Microsoft Sentinel, begrip van Purview-auditlogs en ervaring met juridische meldplichten. Organisaties die deze competenties expliciet vastleggen, kunnen gericht werven, opleiden en beoordelen. Het raamwerk onderscheidt doorgaans rollen zoals eerste-lijns triage-analist, forensisch specialist, incidentcoordinator, communicatieadviseur en privacy liaison. Iedere rol bevat gedragsindicatoren, technische vereisten, vereiste certificeringen en gekoppelde Microsoft 365 workloads. Door deze informatie in een centraal competency model op te nemen, bijvoorbeeld als uitbreiding op de functiehuisdocumentatie, voorkomen organisaties dat kennis afhankelijk wordt van enkele sleutelfiguren. Het raamwerk fungeert als referentiepunt bij audits: de organisatie kan aantonen dat elke kritieke taak is belegd bij personeel met passende expertise.

Het raamwerk moet niet statisch zijn. Microsoft 365 evolueert voortdurend met nieuwe securityfuncties, denk aan geavanceerde detecties in Microsoft Defender XDR, uitbreiding van Purview Data Lifecycle Management of recente beleidswijzigingen rondom data residency. Daarom kent het raamwerk een cyclisch onderhoudsproces. Elk kwartaal wordt beoordeeld of nieuwe technieken of wettelijke verplichtingen extra vaardigheden vereisen. Dit gebeurt idealiter in een multidisciplinair overleg met security architects, HR, juridische experts en het SOC-management. Nieuwe eisen worden vertaald naar concrete leerdoelen en opgenomen in het raamwerk, zodat komende wervingsrondes en ontwikkelgesprekken zijn afgestemd op de actualiteit. Door deze dynamiek ontstaan carrierepaden: analisten kunnen doorgroeien naar senior onderzoekers of naar strategische rollen zoals threat intelligence lead, terwijl beheerders zich kunnen specialiseren in bijvoorbeeld forensisch onderzoek binnen Exchange Online. Het raamwerk maakt inzichtelijk welke stappen nodig zijn voor die doorgroei, inclusief benodigd trainingsmateriaal, certificering en exposure tot bepaalde typen incidenten.

Tot slot moet het raamwerk direct gekoppeld zijn aan de risicokaart van de organisatie. Wanneer een provincie bijvoorbeeld veel externe samenwerking heeft via Teams, of een ministerie gevoelige diplomatieke stukken in SharePoint beheert, vraagt dat om extra nadruk op dataprotectie-competenties. Als een veiligheidsregio afhankelijk is van mobiele apparaten en BYOD, krijgt mobiele dreigingsdetectie prioriteit in het raamwerk. Door deze context toe te voegen krijgt elke rolomschrijving een duidelijke business rationale. Dit helpt bij budgetgesprekken: bestuurders zien waarom extra investeringen in specialistische rollen noodzakelijk zijn en welke risico's worden afgedekt. Het raamwerk wordt zo een managementinstrument waarmee securityteams kunnen aantonen dat hun personeelsstructuur rechtstreeks bijdraagt aan de continuiteit van vitale processen.

Het raamwerk wordt ondersteund door tooling. Veel organisaties gebruiken HR-systemen of GRC-platforms om competenties te registreren, maar voor Microsoft 365 incident response is aanvullende detailinformatie nodig. Denk aan matrices die per medewerker vastleggen welke Defender-portalen zijn beheerst, welke KQL-queries zelfstandig kunnen worden geschreven en welke ervaring is opgedaan met forensische analyses. Door deze gegevens te structureren in een centrale dataset ontstaat realtime zicht op de capaciteit. Tijdens audits of crisisoefeningen kan direct worden aangetoond welke personen bevoegd en beschikbaar zijn. Bovendien maakt de dataset trendanalyses mogelijk: welke competenties groeien, waar lopen we achter en welke toekomstige projecten vragen om nieuwe vaardigheden? Het raamwerk blijft daardoor niet beperkt tot beleidsdocumenten, maar wordt gevoed door meetbare data die dagelijkse sturing ondersteunen.

Werving, opleiding en retentie

Een volwassen team ontwikkel je op basis van een strategisch personeelsplan. Het plan beschrijft de benodigde formatie, de verhouding tussen vaste medewerkers, externe specialisten en trainees, en de wijze waarop kennis wordt geborgd. Omdat de arbeidsmarkt voor securityspecialisten krap is, kiezen veel overheidsorganisaties voor een hybride aanpak: kritieke functies worden intern opgebouwd met duidelijke carrierepaden, terwijl piekbelasting of specialistische onderzoeken tijdelijk door externe partners worden ondersteund. Werving gebeurt in nauwe samenwerking met HR, waarbij het competentieraamwerk fungeert als bron voor vacatureteksten en selectiecriteria. Kandidaten worden niet alleen beoordeeld op diploma's, maar ook op praktische ervaring met Microsoft 365 incidenten, analytische vaardigheden en stressbestendigheid. Assessmentoefeningen kunnen realistische scenario's bevatten, zoals het interpreteren van Defender-alerts of het doorvragen op een verdachte forwardingregel in Exchange Online. Zo wordt al in het sollicitatieproces duidelijk of de kandidaat past bij de dagelijkse realiteit van het SOC.

Opleiding en ontwikkeling zijn vervolgens verankerd in individuele leerpaden. Elk teamlid krijgt een persoonlijke ontwikkelroadmap waarin certificeringen (bijvoorbeeld SC-200, SC-300, AZ-500), interne trainingen en deelname aan oefeningen zijn gepland. Deze roadmap koppelt formele opleidingen aan praktijkervaring: deelname aan een tabletop over privilege escalation in Entra ID, meelopen met een incidentanalist tijdens een echt onderzoek, of het ontwikkelen van een nieuw playbook voor Purview Data Loss Prevention. Door leerdoelen aan concrete projecten te verbinden groeit de expertise organisch mee met de behoeften van de organisatie. Mentorprogramma's versnellen deze groei. Senior analisten koppelen zich aan junior collega's en bieden begeleiding bij het interpreteren van complexe Microsoft 365 signalen. Voor privacy en juridische rollen wordt samenwerking gezocht met Functionarissen Gegevensbescherming zodat ook zij het incident response-proces begrijpen en kunnen ondersteunen met juiste advies.

Retentie vraagt om aandacht voor cultuur, loopbaanperspectief en werkdruk. Incident response is intensief en kan leiden tot overbelasting wanneer teams voortdurend op afroep staan. Daarom worden rouleerschema's ingericht voor consignatiediensten, krijgen medewerkers recht op herstelperiodes na zware incidenten en wordt psychologische ondersteuning toegankelijk gemaakt. Transparante loopbaanpaden, bijvoorbeeld doorgroei naar architectuur- of governancefuncties, voorkomen dat talent vertrekt wegens gebrek aan perspectief. Daarnaast worden successen gevierd en gedeeld met bestuur en lijnmanagement: een maandelijks "threat response"-verslag benadrukt hoe het team incidenten heeft voorkomen of beperkt. Dit vergroot waardering, maakt budgetbeslissingen eenvoudiger en versterkt het gevoel dat security geen bijzaak is maar een kernonderdeel van de dienstverlening aan burgers. In combinatie met competitieve arbeidsvoorwaarden, kennisdeling met andere overheden en deelname aan sectorale communities ontstaat een omgeving waarin specialisten willen blijven.

Tot slot is kennisoverdracht een essentieel retentie-instrument. Nieuwe medewerkers doorlopen gestructureerde onboarding-programma's waarin zij onder begeleiding van een buddy leren werken met Microsoft 365 Defender, Sentinel dashboards en Purview auditlogboeken. Parallel hieraan worden interne kennissessies georganiseerd waarin incidentcases worden uitgediept en vertaald naar verbeteringen in playbooks en procedures. Door kennisdeling te verplichten als onderdeel van prestatie-indicatoren blijft de expertise niet steken bij individuele specialisten. Dit verkleint het risico op single points of failure en zorgt ervoor dat teamontwikkeling niet stokt wanneer iemand vertrekt. Het creeert tevens een leercultuur waarin mensen worden gestimuleerd om onderzoek te doen naar nieuwe dreigingen, bijvoorbeeld het uitpluizen van recente Microsoft beveiligingsbulletins of het bijdragen aan sectorale ISAC's. Die cultuur maakt de organisatie aantrekkelijk voor talent dat vooruit wil.

Inbedding in dagelijkse SOC- en beheerprocessen

Teamontwikkeling komt pas tot leven wanneer de incident response-rol dagelijks zichtbaar is in processen en tooling. Dit begint met duidelijke taakverdeling in de Security Operations Center (SOC) workflows. Microsoft 365 specifieke alerts uit Defender XDR, Purview en Entra ID worden toegewezen aan analisten met de juiste expertise. Triage gebeurt op basis van gestandaardiseerde criteria waarin technische ernst, juridische impact en mogelijke verstoring van vitale processen zijn verwerkt. Iedere dienstdoende analist beschikt over up-to-date runbooks en een overzicht van de standby-experts voor escalatie. Door deze werkwijze in het ticketingsysteem te verankeren, ontstaat een reproduceerbaar proces dat niet afhankelijk is van individuele notities. Tevens worden dagelijkse stand-ups gehouden waarin incidenten, lessons learned en verbeterpunten worden gedeeld, zodat kennis direct in het team circuleert.

Samenwerking met andere teams is cruciaal. Microsoft 365 incident response raakt vrijwel altijd aan identity beheer, netwerkbeveiliging, applicatie-eigenaren en communicatie. Daarom zijn verbindende rollen aangewezen die als single point of contact optreden richting bijvoorbeeld het Entra ID-beheerteam of het Microsoft 365 adoption team. Deze verbinding wordt ondersteund door gezamenlijke dashboards waarin iedere partner ziet welke incidenten lopen, welke maatregelen al zijn genomen en welke beslissingen nog openstaan. Door Microsoft Sentinel of een ander SIEM als "single source of truth" te gebruiken, kunnen teams dezelfde data raadplegen en discussies op feiten baseren. Bovendien worden integraties ingericht met IT Service Management-platforms (zoals ServiceNow of Topdesk) zodat incidentgegevens automatisch worden doorgezet naar change- of probleembeheerprocessen. Zo worden structurele verbeteringen verankerd en blijft het incident response-team niet hangen in brandjes blussen.

Operationalisering betekent ook dat teamontwikkeling is gekoppeld aan business continuity en crisismanagement. Incident response-leads hebben een vaste plek in het crisisoverleg en hebben bevoegdheid om maatregelen zoals gebruikersblokkades of isolatie van SharePoint-sites te initieren. Communicatiesjablonen, contactlijsten en escalatiecriteria zijn gedeeld met het CISO-office en de bestuursdienst. Daarnaast wordt gewerkt met scenario-gebaseerde oefeningen waarbij het incident response-team samen met business vertegenwoordigers doorloopt hoe een verstoring impact heeft op dienstverlening. De resultaten worden teruggekoppeld naar het teamontwikkelingsplan: blijken bepaalde vaardigheden onderbelicht, dan worden trainingen toegevoegd; loopt communicatie stroef, dan worden liaison-rollen aangepast. Zo ontstaat een feedbacklus waarin operationele ervaring direct leidt tot verbetering van mensen, processen en technologie.

Een praktische randvoorwaarde voor deze inbedding is tooling die samenwerking faciliteert. Teams-kanalen worden ingericht als "wartime rooms" met vaste tabs naar Sentinel dashboards, incidenttickets en documentatie. SharePoint-bibliotheken bevatten gecontroleerde formulieren voor beslisnotities en datalekmeldingen, terwijl Power Automate-flows escalaties automatiseren richting bestuurders en externe partners. Door deze digitale werkomgeving te standaardiseren, kunnen nieuwe teamleden snel instromen en weten externe partners precies welke informatie wordt verwacht. Het incident response-team maakt zo gebruik van hetzelfde platform dat zij beschermen, waardoor lessen over adoptie, toegangsbeheer en governance direct worden weerspiegeld in hun dagtaak.

Governance, metrics en continue verbetering

Gebruik PowerShell-script team-development.ps1 (functie Invoke-Monitoring) – Controleert de configuratie voor teamontwikkeling, rapporteert over bezetting, certificeringen en opleidingsvoortgang, en markeert hiaten..

Governance maakt inzichtelijk of teamontwikkeling daadwerkelijk voortgang boekt. Het begint met een formeel vastgesteld beleidsdocument waarin doelen, verantwoordelijkheden, KPI's en rapportagelijnen zijn beschreven. Dit beleid koppelt teamontwikkeling aan risicomanagement: elke KPI heeft een directe relatie met dreigingen voor Microsoft 365. Voorbeelden zijn dekking van sleutelrollen, percentage analisten met actuele certificeringen, gemiddelde tijd om een nieuw teamlid volledig inzetbaar te maken, en het aantal uren dat medewerkers besteden aan training en kennisdeling. Deze indicatoren worden maandelijks verzameld uit HR-systemen, opleidingsportalen en SOC-tools. Door een eenduidige rapportagecadans te hanteren (bijvoorbeeld kwartaalrapportages aan het security committee) blijft bestuur continu op de hoogte en kunnen tijdig middelen worden vrijgemaakt wanneer indicatoren onder de norm schieten.

Metrics zijn geen doel op zich; ze vormen de basis voor continue verbetering. Analyse van trendgegevens laat zien of maatregelen effect hebben. Wanneer het aantal analisten met SC-200-certificering achterblijft, kan een bootcamp worden georganiseerd. Als retentiecijfers verslechteren, wordt onderzocht of loopbaanpaden, werkdruk of beloning moeten worden aangepast. Het verbonden PowerShell-script fungeert als controlemechanisme: het leest een lokale configuratiefile met rolbezetting, trainingstatus en opvolgacties, en genereert een overzicht met alerting op knelpunten. Deze technische aantoonbaarheid is belangrijk richting auditors: de organisatie kan laten zien dat ontwikkeling niet alleen op gevoel gebeurt, maar dat concrete criteria worden gemeten en geborgd. De scriptuitvoer wordt geupload naar het documentmanagementsysteem en gekoppeld aan risk registers, zodat opvolging traceerbaar is.

Continue verbetering vereist dat governance en metrics zijn verbonden met lessons learned uit incidenten en oefeningen. Elke keer dat een incident response-sessie uitwijst dat bepaalde kennis ontbreekt, wordt een verbeteractie toegevoegd aan het teamontwikkelingsplan. De voortgang wordt gemonitord in dezelfde dashboards als technische KPI's. Successen worden gedeeld tijdens townhalls of securitycafes, zodat het grotere organisatiebewustzijn groeit. Door deze transparantie ontstaat draagvlak voor verdere investeringen en voelen teamleden zich gezien. Het resultaat is een volwassen organisatie waarin teamontwikkeling niet als project wordt gezien, maar als structureel onderdeel van het besturingsmodel voor de Microsoft 365-omgeving.

Naast kwantitatieve indicatoren wordt kwalitatieve feedback systematisch verzameld. Interviews na incidenten en oefeningen, retrospectives met betrokken teams en enquetes over samenwerking leveren inzichten op over cultuur en communicatie. Deze bevindingen worden gelijkwaardig behandeld aan harde cijfers. Wanneer bijvoorbeeld blijkt dat privacy officers te laat worden aangehaakt, wordt het governanceproces aangepast en krijgt de desbetreffende rol een vaste plek in de escalatieladder. Als analisten aangeven dat de tooling onvoldoende ondersteuning biedt voor kennisdeling, wordt geinvesteerd in documentatieplatforms of automatisering. Zo blijft teamontwikkeling afgestemd op de dagelijkse praktijk in plaats van op theoretische KPI's alleen.

Remediatie en versnelling

Gebruik PowerShell-script team-development.ps1 (functie Invoke-Remediation) – Genereert een basisconfiguratie voor teamontwikkeling met rollen, trainingsdoelen en open acties, inclusief automatische back-up..

Organisaties die constateren dat hun incident response-team onderbezet is of onvoldoende competenties heeft, hebben een gestructureerd remediatieplan nodig. Het plan start met een nulmeting waarin de huidige rolbezetting, certificeringen, trainingstrackers en lessons learned worden geinventariseerd. De resultaten worden gespiegeld aan het competentieraamwerk om hiaten zichtbaar te maken. Vervolgens worden prioriteiten bepaald: kritieke rollen krijgen versnelde werving of detachering, bestaande medewerkers krijgen maatgerichte opleidingspaden en externe partners worden tijdelijk opgeschaald om 24/7-dekking te garanderen. Het remediatieplan koppelt elke maatregel aan budgetten, beslismomenten en verwachte risicoreductie. Bestuurders kunnen op basis hiervan gericht besluiten nemen over investeringen, terwijl toezichthouders zien dat de organisatie de tekortkomingen serieus aanpakt.

Versnelling vraagt ook om slimme tooling en samenwerking. Het PowerShell-script levert een configuratiebestand waarmee organisaties bijhouden welke rollen ingevuld zijn, welke trainingen gepland staan en welke acties openstaan. Door dit bestand te synchroniseren met SharePoint of Teams kunnen stakeholders eenvoudig rapportages inzien en commentaar toevoegen. Daarnaast worden partnerschappen opgezet met andere overheden, kennisinstellingen en marktpartijen om talent uit te wisselen, gezamenlijke trainingen te organiseren en lessons learned te delen. Door deze ecosystemen te benutten verkort je de doorlooptijd van remediatie en beperk je de afhankelijkheid van dure externe consultancy. Na afronding van de remediatiefase wordt de nulmeting opnieuw uitgevoerd om te bevestigen dat doelen zijn gehaald en dat teamontwikkeling weer aansluit op de vereisten van de Nederlandse Baseline voor Veilige Cloud.

Wanneer de remediatiefase is afgerond, wordt een transitieplan opgesteld om verbeteringen te borgen. Dit plan beschrijft hoe tijdelijke externe capaciteit wordt uitgefaseerd, hoe kennis wordt overgedragen naar interne teams en hoe nieuwe tooling in beheer wordt genomen. Evaluaties na zes en twaalf maanden controleren of de beoogde cultuurverandering echt heeft plaatsgevonden. Indien nodig wordt een aanvullende remediatieronde gepland, bijvoorbeeld om zich aan te passen aan nieuwe NIS2-uitvoeringsregels of aanpassingen in Microsoft 365 licentievoorwaarden. Op deze manier blijft teamontwikkeling geen eenmalige inhaalactie, maar een continu proces dat inspeelt op veranderende risico's.

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 Teamontwikkeling voor Microsoft 365 incident response .DESCRIPTION Ondersteunt security- en HR-teams bij het monitoren en structureren van competenties, rolbezetting en verbeteracties voor incident response-teams binnen Microsoft 365. Het script werkt met een lokale configuratiefile zodat governance en aantoonbaarheid onafhankelijk van externe tooling kunnen worden geborgd. .NOTES Filename: team-development.ps1 Author: Nederlandse Baseline voor Veilige Cloud Category: incident-response .EXAMPLE .\team-development.ps1 -Monitoring Leest de configuratiefile uit en toont dekking van rollen, certificeringen en trainingen. .EXAMPLE .\team-development.ps1 -Remediation Maakt of vernieuwt de basisconfiguratie voor teamontwikkeling inclusief voorbeeldrollen. #> #Requires -Version 5.1 [CmdletBinding()] param( [Parameter(Mandatory = $false)] [switch]$Monitoring, [Parameter(Mandatory = $false)] [switch]$Remediation, [Parameter(Mandatory = $false)] [switch]$Revert, [Parameter(Mandatory = $false)] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Teamontwikkeling Incident Response (M365)" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Get-ConfigPath { <# .SYNOPSIS Bepaalt het pad naar de configuratiefile. #> $scriptDir = Split-Path -Parent $PSCommandPath return (Join-Path -Path $scriptDir -ChildPath "team-development.config.json") } function Initialize-DefaultConfig { <# .SYNOPSIS Maakt een standaardconfiguratie met voorbeeldrollen en KPI's. #> $config = [ordered]@{ version = "1.0" lastUpdated = (Get-Date).ToString("yyyy-MM-dd") owner = "CISO / Head of Security Operations" kpis = [ordered]@{ coverageTargetPercent = 90 certificationTargetPercent = 75 trainingCompletionTarget = 80 mentoringHoursPerQuarter = 40 } roles = @( [ordered]@{ id = "IR-RL-001" title = "SOC Analist Microsoft 365" targetHeadcount = 4 filledHeadcount = 2 requiredCompetences = @( "Microsoft 365 Defender triage", "KQL-querying in Microsoft Sentinel", "Purview auditlog interpretatie" ) certificationGoal = "SC-200" certifiedMembers = 1 onboardingWeeks = 8 notes = "Extra werving nodig om 24/7 dekking te behalen." }, [ordered]@{ id = "IR-RL-002" title = "Incident Coordinator" targetHeadcount = 2 filledHeadcount = 1 requiredCompetences = @( "Crisiscommunicatie", "BIO/NIS2 meldplichten", "Microsoft 365 service recovery" ) certificationGoal = "SC-100" certifiedMembers = 1 onboardingWeeks = 12 notes = "Back-uprol moet worden ingevuld." } ) trainings = @( [ordered]@{ id = "TR-001" title = "Microsoft Defender XDR Deep Dive" dueDate = (Get-Date).AddMonths(2).ToString("yyyy-MM-dd") participants = 6 completed = 2 owner = "SOC Lead" status = "Planned" }, [ordered]@{ id = "TR-002" title = "Tabletop oefening datalek" dueDate = (Get-Date).AddMonths(1).ToString("yyyy-MM-dd") participants = 10 completed = 0 owner = "Crisiscoordinator" status = "NotStarted" } ) actions = @( [ordered]@{ id = "AC-001" description = "Werving senior SOC-analist met Purview-ervaring" priority = "High" owner = "HR & CISO" dueDate = (Get-Date).AddMonths(1).ToString("yyyy-MM-dd") status = "Open" }, [ordered]@{ id = "AC-002" description = "Opzetten mentorschapstraject voor junior analisten" priority = "Medium" owner = "SOC Lead" dueDate = (Get-Date).AddMonths(2).ToString("yyyy-MM-dd") status = "InProgress" } ) } return $config } function Invoke-Monitoring { <# .SYNOPSIS Analyseert de configuratie en rapporteert over KPI's. #> try { $configPath = Get-ConfigPath if (-not (Test-Path -Path $configPath)) { Write-Host "[WARN] Geen configuratiebestand gevonden: $configPath" -ForegroundColor Yellow Write-Host " Voer '.\team-development.ps1 -Remediation' uit om een basisconfig te genereren.`n" -ForegroundColor Yellow exit 1 } $raw = Get-Content -Path $configPath -Raw -ErrorAction Stop $config = $raw | ConvertFrom-Json -ErrorAction Stop $totalHeadcount = ($config.roles | Measure-Object -Property targetHeadcount -Sum).Sum $filledHeadcount = ($config.roles | Measure-Object -Property filledHeadcount -Sum).Sum $coveragePercent = if ($totalHeadcount -gt 0) { [math]::Round(($filledHeadcount / $totalHeadcount) * 100, 1) } else { 0 } $totalCertGoals = ($config.roles | Where-Object { $_.certificationGoal } | Measure-Object).Count $certifiedCount = ($config.roles | Where-Object { $_.certifiedMembers -ge 1 }).Count $certPercent = if ($totalCertGoals -gt 0) { [math]::Round(($certifiedCount / $totalCertGoals) * 100, 1) } else { 0 } $totalTrainings = ($config.trainings | Measure-Object).Count $completedTrainings = ($config.trainings | Where-Object { $_.status -eq "Completed" }).Count $trainingPercent = if ($totalTrainings -gt 0) { [math]::Round(($completedTrainings / $totalTrainings) * 100, 1) } else { 0 } $overdueTrainings = ($config.trainings | Where-Object { $_.status -ne "Completed" -and $_.dueDate -and (Get-Date $_.dueDate) -lt (Get-Date) }).Count $openHighActions = ($config.actions | Where-Object { $_.priority -eq "High" -and $_.status -ne "Closed" }).Count Write-Host "Configuratie: $configPath" -ForegroundColor Gray Write-Host "Eigenaar: $($config.owner)" -ForegroundColor Gray Write-Host "Laatst bijg.: $($config.lastUpdated)`n" -ForegroundColor Gray Write-Host "Rolbezetting:" -ForegroundColor Cyan Write-Host " Doel FTE : $totalHeadcount" -ForegroundColor White Write-Host " Ingevuld : $filledHeadcount" -ForegroundColor White Write-Host " Dekking : $coveragePercent% (target $($config.kpis.coverageTargetPercent)% )`n" -ForegroundColor White Write-Host "Certificeringen:" -ForegroundColor Cyan Write-Host " Rollen met doel : $totalCertGoals" -ForegroundColor White Write-Host " Rollen behaald : $certifiedCount" -ForegroundColor White Write-Host " Percentage : $certPercent% (target $($config.kpis.certificationTargetPercent)% )`n" -ForegroundColor White Write-Host "Trainingen:" -ForegroundColor Cyan Write-Host " Totaal gepland : $totalTrainings" -ForegroundColor White Write-Host " Afgerond : $completedTrainings" -ForegroundColor White Write-Host " Voltooiing : $trainingPercent% (target $($config.kpis.trainingCompletionTarget)% )" -ForegroundColor White Write-Host " Achterstallig : $overdueTrainings`n" -ForegroundColor White Write-Host "Acties met prioriteit 'High' open: $openHighActions`n" -ForegroundColor Cyan $compliant = ($coveragePercent -ge $config.kpis.coverageTargetPercent) -and ($certPercent -ge $config.kpis.certificationTargetPercent) -and ($trainingPercent -ge $config.kpis.trainingCompletionTarget) -and ($overdueTrainings -eq 0) if ($compliant) { Write-Host "[OK] Teamontwikkeling voldoet aan de ingestelde KPI's." -ForegroundColor Green exit 0 } else { Write-Host "[WARN] Een of meerdere KPI's worden niet gehaald. Plan remediatie." -ForegroundColor Yellow exit 1 } } catch { Write-Host "[FAIL] Monitoring mislukt: $_" -ForegroundColor Red Write-Host "Details: $($_.Exception.Message)" -ForegroundColor Red exit 2 } } function Invoke-Remediation { <# .SYNOPSIS Maakt of vernieuwt de configuratiefile met voorbeelddata. #> try { $configPath = Get-ConfigPath if (Test-Path -Path $configPath) { $timestamp = Get-Date -Format "yyyyMMddHHmmss" $backup = "$configPath.bak_$timestamp" if (-not $WhatIf) { Copy-Item -Path $configPath -Destination $backup -Force -ErrorAction Stop } Write-Host "[INFO] Back-up gemaakt: $backup" -ForegroundColor Gray } $config = Initialize-DefaultConfig $json = $config | ConvertTo-Json -Depth 6 if ($WhatIf) { Write-Host "[WhatIf] Configuratie zou worden weggeschreven naar: $configPath" -ForegroundColor Yellow Write-Host $json } else { $dir = Split-Path -Parent $configPath if (-not (Test-Path -Path $dir)) { New-Item -ItemType Directory -Path $dir -Force | Out-Null } $json | Out-File -FilePath $configPath -Encoding UTF8 -Force Write-Host "[OK] Basisconfiguratie aangemaakt/bijgewerkt: $configPath" -ForegroundColor Green } Write-Host "`nVolgende stappen:" -ForegroundColor Cyan Write-Host " * Vul actuele headcount en trainingsdata in." -ForegroundColor Gray Write-Host " * Koppel acties aan owners en due dates voor audittrail." -ForegroundColor Gray Write-Host " * Automatiseer uitvoering van -Monitoring in je CI/CD of taakplanner." -ForegroundColor Gray exit 0 } catch { Write-Host "[FAIL] Remediatie mislukt: $_" -ForegroundColor Red Write-Host "Details: $($_.Exception.Message)" -ForegroundColor Red exit 2 } } function Invoke-Revert { <# .SYNOPSIS Verwijdert optioneel de configuratiefile. #> try { $configPath = Get-ConfigPath if (-not (Test-Path -Path $configPath)) { Write-Host "[INFO] Geen configuratie om te verwijderen." -ForegroundColor Gray exit 0 } if ($WhatIf) { Write-Host "[WhatIf] Configuratie zou worden verwijderd: $configPath" -ForegroundColor Yellow } else { Remove-Item -Path $configPath -Force -ErrorAction Stop Write-Host "[OK] Configuratie verwijderd: $configPath" -ForegroundColor Green } exit 0 } catch { Write-Host "[FAIL] Verwijderen mislukt: $_" -ForegroundColor Red Write-Host "Details: $($_.Exception.Message)" -ForegroundColor Red exit 2 } } try { if ($Revert) { Invoke-Revert } elseif ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { Invoke-Remediation } else { Write-Host "Gebruik:" -ForegroundColor Yellow Write-Host " -Monitoring Rapporteer KPI's voor teamontwikkeling" -ForegroundColor Gray Write-Host " -Remediation Genereer of vernieuw de configuratie" -ForegroundColor Gray Write-Host " -Revert Verwijder de configuratiefile (combineer met -WhatIf voor dry-run)" -ForegroundColor Gray } } catch { throw } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder structurele teamontwikkeling ontbreekt aantoonbare deskundigheid voor Microsoft 365 incident response, waardoor waarschuwingen blijven liggen, meldplichten worden gemist en bestuurders geen betrouwbaar advies ontvangen tijdens crises.

Management Samenvatting

Ontwikkel een multidisciplinair incident response-team met een dynamisch competentieraamwerk, duidelijke leerpaden, koppeling aan dagelijkse SOC-processen en strakke governance. Gebruik het PowerShell-script om bezetting en opleidingsstatus te monitoren en herstelacties te borgen.