Executive Security Briefings Voor Bestuurders En Directies

💼 Management Samenvatting

Executive security briefings vormen een cruciaal instrument om bestuurders, wethouders, directieleden en andere besluitvormers op een begrijpelijke maar technisch betrouwbare manier te informeren over de actuele cyberdreigingen en de staat van informatiebeveiliging binnen de organisatie. In de Nederlandse publieke sector zijn deze sessies onmisbaar om te voldoen aan governance-eisen uit BIO, NIS2 en sectorale richtlijnen en om te borgen dat bestuurders aantoonbaar "in control" zijn over de beveiliging van Microsoft 365 en andere cloudomgevingen.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
7/10
Implementatie
100u (tech: 40u)
Van toepassing op:
M365
Publieke Sector
Overheidsorganisaties

Veel overheidsbestuurders voelen wel dat cyberdreigingen toenemen, maar ontvangen versnipperde of te technische informatie. Incidentrapportages, losse dashboards of ad‑hoc PowerPointpresentaties geven vaak geen samenhangend beeld van risico’s, kwetsbaarheden en getroffen maatregelen. Tegelijkertijd verlangt wet- en regelgeving dat bestuurders aantoonbaar verantwoordelijkheid nemen voor informatiebeveiliging en dat zij weloverwogen besluiten nemen over investeringen, prioriteiten en residual risk. Zonder gestructureerde executive security briefings bestaat het risico dat belangrijke beslissingen worden genomen op basis van onvolledige of verouderde informatie, dat het bestuur onvoldoende bewust is van afhankelijkheden van Microsoft 365 en dat incidenten achteraf worden beoordeeld als "voorzienbaar maar niet voldoende geadresseerd". Dit artikel beschrijft hoe u een professioneel briefingprogramma inricht dat aansluit bij de taal, agenda en verantwoordelijkheden van bestuurders, terwijl de technische diepgang en feitelijke juistheid zijn geborgd.

PowerShell Modules Vereist
Primary API: Microsoft 365 Defender en Microsoft Purview
Connection: Connect-MgGraph; Connect-IPPSSession
Required Modules: Microsoft.Graph, ExchangeOnlineManagement

Implementatie

Een volwassen programma voor executive security briefings rond Microsoft 365 bestaat uit periodieke, goed voorbereide sessies waarin CISO, CIO, security officers en soms externe experts de belangrijkste risico’s, incidenten, trends en verbeteracties toelichten aan bestuur en directie. De basis wordt gevormd door objectieve data uit Microsoft 365: signalen uit Microsoft 365 Defender, Secure Score, Purview audit logs, DLP‑meldingen, configuratiecompliance en de resultaten van PowerShell‑gebaseerde controlescripts uit de "Nederlandse Baseline voor Veilige Cloud". Deze gegevens worden vertaald naar begrijpelijke kernboodschappen: waar lopen we het meeste risico, welke maatregelen zijn recent genomen, waar zitten nog gaten en welke beslissingen of middelen zijn nodig van het bestuur? Een goede briefing maakt expliciet welke onderdelen van de verantwoordelijkheid bij bestuur en directie liggen (bijvoorbeeld risicobereidheid, prioritering van projecten en toewijzing van budget) en welke onderdelen operationeel zijn belegd bij IT en securityteams. Dit artikel geeft een uitwerking van de opzet, inhoud, rollen en tooling voor dergelijke briefings, inclusief een PowerShell‑script dat automatisch een basisrapportage genereert op basis van Microsoft 365‑signalen.

Governance-context en rol van bestuurders

Executive security briefings zijn geen technisch overlegmoment, maar een integraal onderdeel van de governance rond digitale veiligheid binnen de organisatie. In de Nederlandse publieke sector zijn bestuurders en directies eindverantwoordelijk voor de naleving van BIO, AVG, NIS2 en sectorspecifieke kaders. Deze verantwoordelijkheid gaat verder dan het formeel vaststellen van beleid: zij omvat ook het sturen op risicobereidheid, het prioriteren van investeringen in cyberweerbaarheid en het periodiek laten toetsen van de effectiviteit van maatregelen. Een gestructureerde briefing maakt dit concreet door op bestuursniveau de belangrijkste risico’s en trends te bespreken, inclusief de afhankelijkheid van Microsoft 365 voor primaire processen, ambtelijke ondersteuning en dienstverlening aan burgers. Door Microsoft 365 expliciet in de governance-agenda op te nemen, wordt duidelijk dat het geen generieke "IT-oplossing" is, maar een kritieke voorziening die integraal onderdeel vormt van de dienstverlening en bestuurlijke verantwoordelijkheid.

In een volwassen governance‑model sluit de frequentie en inhoud van de briefings aan op bestaande overlegstructuren. Veel organisaties kennen een informatiebeveiligingsboard, een privacyboard of een integrale risicocommissie waarin CISO, FG, CIO en vertegenwoordigers van de business samenkomen. Executive security briefings kunnen hier als vast agendapunt worden gepositioneerd, bijvoorbeeld per kwartaal of bij relevante gebeurtenissen zoals grote wijzigingen in Microsoft 365, belangrijke updates in dreigingslandschappen of na een significant incident. In plaats van een eenmalige campagne wordt de briefing zo een terugkerend instrument dat bestuurders structureel zicht geeft op de ontwikkeling van risico’s, de voortgang van verbeterprogramma’s en de effecten van eerder genomen besluiten. Dit voorkomt dat verantwoordelijkheid voor digitale veiligheid impliciet bij de IT‑afdeling blijft liggen en versterkt de cultuur waarin bestuurders actief sturen op cyberweerbaarheid.

Juridisch en normatief is het voor bestuurders belangrijk om aan te kunnen tonen dat zij "reasonable steps" hebben genomen om informatiebeveiligingsrisico’s te beperken. NIS2 en BIO leggen nadruk op bestuurdersaansprakelijkheid, passende maatregelen, risicogestuurd werken en aantoonbaarheid. Executive security briefings leveren hiervoor concreet bewijs: de agenda, notulen, beslisdocumenten en opvolgingsacties vormen onderdeel van de audit‑trail die laat zien dat bestuurders geïnformeerd waren, relevante scenario’s hebben besproken en expliciet keuzes hebben gemaakt over bijvoorbeeld risicobereidheid, prioritering van projecten of acceptatie van bepaalde kwetsbaarheden. Door de inhoud van de briefings te koppelen aan objectieve data uit Microsoft 365 en de controlescripts uit de "Nederlandse Baseline voor Veilige Cloud" ontstaat een consistent beeld tussen bestuurlijke rapportages, technische metingen en externe audits.

Ontwerp van een structureel briefingprogramma

Een effectief briefingprogramma begint met een helder ontwerp waarin doelstelling, doelgroep, frequentie en scope zijn vastgelegd. Voor een Nederlandse overheidsorganisatie betekent dit dat vooraf wordt bepaald welke gremia worden bediend (bijvoorbeeld college van B&W, directieraad, bestuur van een uitvoeringsorganisatie), welke informatie zij nodig hebben om hun taak goed te kunnen uitvoeren en hoe diep technisch de briefings mogen gaan. Een goed uitgangspunt is om te werken met drie lagen van informatie: een kernboodschap op hoog niveau waarin in enkele zinnen per thema wordt beschreven wat de status is; een tactische laag waarin de belangrijkste trends en cijfers worden toegelicht (incidenten, kwetsbaarheden, compliance‑scores, voortgang op verbeterprogramma’s); en een operationele bijlage met meer detail voor geïnteresseerde bestuurders en adviseurs. Door deze lagen helder te definiëren, kan dezelfde gegevensbasis uit Microsoft 365 worden hergebruikt voor verschillende doelgroepen zonder dat de kernboodschap verloren gaat.

Vervolgens wordt bepaald welke informatiebronnen worden gebruikt om de briefings te voeden. Voor Microsoft 365 gaat het onder meer om Secure Score, rapportages uit Microsoft 365 Defender, Purview audit logs, DLP‑incidenten, configuratieoverzichten van belangrijke policies (bijvoorbeeld MFA, conditional access, retentie en DLP) en de uitkomsten van de PowerShell‑scripts uit deze baselines, zoals controles op identity protection, data‑retentie en complianceframeworks. Deze bronnen worden gebundeld in een standaardrapportage, bij voorkeur geautomatiseerd via PowerShell en eventueel ontsloten in Power BI. Het doel is dat de CISO en security officers niet steeds opnieuw handmatig gegevens hoeven te verzamelen, maar periodiek een reproduceerbaar pakket kunnen genereren dat de basis vormt voor de executive briefing. Naast technische data wordt ook contextinformatie toegevoegd, zoals wijzigingen in wet- en regelgeving, relevante waarschuwingen van NCSC of sectorale CERT’s en ervaringen uit recente incidenten of oefeningen.

Tot slot moet binnen het ontwerp expliciet aandacht zijn voor follow‑up en besluitvorming. Een briefing die slechts informeert maar nooit leidt tot acties of bijsturing, verliest snel aan waarde. Daarom is het raadzaam om per sessie te werken met een vast stramien: een korte terugblik op eerder gemaakte afspraken, een overzicht van de huidige risicopositie en afwijkingen ten opzichte van afgesproken drempelwaarden, een bespreking van voorstellen voor maatregelen of projecten en een besluitvormingsoverzicht waarin helder staat welke acties door wie en voor wanneer worden opgepakt. Deze afspraken worden vastgelegd in notulen en opgenomen in een actielijst die bij de volgende briefing wordt herzien. Door dit proces strak te organiseren en te koppelen aan project- en portfoliomanagement ontstaat een directe lijn tussen de inhoud van de briefings en de werkelijke verbeteringen in de Microsoft 365‑omgeving en de bredere digitale infrastructuur.

Gebruik van Microsoft 365 data, dashboards en scripts

Een van de grootste uitdagingen bij executive security briefings is het vertalen van grote hoeveelheden technische data naar begrijpelijke, betrouwbare managementinformatie. Microsoft 365 biedt een rijk ecosysteem aan signalen en rapportages, maar zonder structuur verzandt dit al snel in detail. Een professionele aanpak start daarom met het definiëren van een beperkt aantal kernindicatoren die relevant zijn voor bestuur en directie. Denk aan de ontwikkeling van Secure Score over de laatste kwartalen, het aantal en type high severity‑incidenten in Microsoft 365 Defender, de mate waarin MFA en conditional access zijn uitgerold, de dekking van DLP‑regels voor gevoelige gegevens, de status van retentie‑ en archiveringsbeleid en de trends in phishing‑campagnes en account‑compromises. Deze indicatoren worden vervolgens genormaliseerd naar een eenvoudig kleur- of scoremodel dat in één oogopslag laat zien waar de grootste aandachtspunten liggen, zonder de onderliggende feiten te versimpelen of te verdoezelen.

PowerShell‑scripts spelen een belangrijke rol bij het betrouwbaar verzamelen van deze gegevens. Binnen de "Nederlandse Baseline voor Veilige Cloud" zijn diverse scripts beschikbaar die configuraties en statusinformatie uit Microsoft 365 ophalen en in gestructureerde objecten teruggeven. Door deze scripts te combineren in een periodieke run – bijvoorbeeld wekelijks of voorafgaand aan iedere executive briefing – ontstaat een dataset die eenvoudig kan worden geladen in Power BI of andere rapportagetools. Het script dat bij dit artikel hoort, richt zich specifiek op het genereren van een managementoverzicht voor bestuurlijke briefings: het combineert kerngegevens uit identity‑bescherming, data‑retentie, DLP‑configuratie en incidentstatistieken en vat deze samen in een aantal kernconclusies die direct in een bestuurspresentatie kunnen worden overgenomen. Zo wordt voorkomen dat elke briefing opnieuw handmatig moet worden samengesteld en wordt de kwaliteit en consistentie van de rapportages verhoogd.

Bij het gebruik van dashboards en scripts is het essentieel om transparant te zijn over de herkomst en beperkingen van de data. Bestuurders moeten kunnen vertrouwen op de getoonde cijfers, maar ook begrijpen wat zij níet zien. Een Secure Score geeft bijvoorbeeld inzicht in de mate waarin aanbevolen configuraties zijn toegepast, maar zegt weinig over de effectiviteit van processen rond incidentrespons of de weerbaarheid van leveranciers. Audit logs tonen welke acties in Microsoft 365 zijn uitgevoerd, maar niet altijd waarom deze acties zijn uitgevoerd of welke organisatorische context hieraan ten grondslag ligt. Het is daarom aan de CISO en security officers om tijdens de briefing expliciet toe te lichten welke indicatoren worden getoond, welke bronnen zijn gebruikt, welke aannames zijn gedaan en waar mogelijk blinde vlekken zitten. Dit vergroot het vertrouwen van bestuurders in de cijfers en helpt hen om de juiste vragen te stellen.

Voorbereiding en uitvoering van de briefing

De kwaliteit van een executive security briefing wordt in hoge mate bepaald door de voorbereiding. Een professionele voorbereiding start met het ophalen en analyseren van de meest recente gegevens uit Microsoft 365, bij voorkeur via geautomatiseerde scripts. Op basis hiervan stelt de CISO of security officer een conceptverhaal op: wat zijn de belangrijkste positieve ontwikkelingen, welke risico’s nemen toe, waar zien we structurele kwetsbaarheden of tekortkomingen en welke beslissingen of middelen zijn nodig? Dit concept wordt afgestemd met relevante stakeholders, zoals de CIO, FG en eventueel de Chief Data Officer, zodat de presentatie consistent is met andere lopende programma’s en beleidsontwikkelingen. Vervolgens wordt de kernboodschap vertaald naar een beknopte presentatie in begrijpelijke taal, ondersteund door enkele overzichtelijke grafieken of tabellen die direct uit de scripts en dashboards zijn afgeleid.

Tijdens de uitvoering van de briefing is het belangrijk om te vermijden dat de sessie verzandt in technische details of incidentniveaus. Bestuurders hebben beperkte tijd en moeten in staat worden gesteld om op hoofdlijnen te sturen. Een effectieve aanpak is om per thema (bijvoorbeeld identity‑bescherming, data‑bescherming, incidentrespons, leveranciersrisico’s) eerst een korte samenvattende slide te presenteren met een duidelijke kwalificatie (bijvoorbeeld "op koers", "aandacht vereist", "kritiek") gevolgd door maximaal drie belangrijkste argumenten. Alleen wanneer bestuurders doorvragen, wordt dieper technisch uitgelegd. Het bijbehorende PowerShell‑script kan worden gebruikt om op verzoek aanvullende detailrapportages te tonen, maar de kern van de sessie blijft gericht op besluitvorming: welke risico’s accepteert de organisatie, welke maatregelen worden opgevoerd en welke projecten krijgen prioriteit. Door hier expliciet tijd voor te reserveren in de agenda en besluiten helder te formuleren, wordt de briefing een strategisch stuurmoment in plaats van een eenrichtingsverhaal.

Na afloop van de briefing is opvolging minstens zo belangrijk als de sessie zelf. Besluiten en acties worden vastgelegd, toegewezen aan verantwoordelijken en voorzien van een planning. Deze acties kunnen variëren van het versneld uitrollen van MFA voor specifieke groepen, het aanscherpen van DLP‑beleid of retentieregels, het uitvoeren van een aanvullende risicoanalyse tot het starten van een bewustwordingscampagne voor medewerkers. Bij een volgende briefing wordt expliciet gerapporteerd over de voortgang en effecten van deze acties, ondersteund door vernieuwde data uit Microsoft 365 en de controlescripts. Daardoor ontstaat een continue verbetercyclus waarin bestuurders niet alleen worden geïnformeerd, maar ook zien dat hun besluiten daadwerkelijk leiden tot concrete verbeteringen in de beveiliging en compliance van de Microsoft 365‑omgeving.

Automatisering met PowerShell en integratie in rapportageketen

Gebruik PowerShell-script executive-security-briefings.ps1 (functie Invoke-ExecutiveSecurityBriefingReport) – Genereert een samenvattend rapport met kernindicatoren uit Microsoft 365 (identity‑bescherming, data‑bescherming, incidentstatistieken) ten behoeve van executive security briefings, inclusief DebugMode voor lokaal testen..

Automatisering is essentieel om executive security briefings schaalbaar en betrouwbaar te maken. Het PowerShell‑script dat bij dit artikel hoort, dient als referentie-implementatie om kernindicatoren uit Microsoft 365 samen te brengen in één overzichtelijk rapport. Het script maakt verbinding met Microsoft Graph en, waar nodig, met Microsoft Purview en Microsoft 365 Defender om gegevens op te halen over bijvoorbeeld het percentage gebruikers met meervoudige authenticatie, het aantal actieve conditional access‑policies, de status van belangrijke compliance‑policies en recente high severity‑incidenten. De uitkomst wordt als gestructureerd PowerShell‑object geretourneerd, dat eenvoudig kan worden omgezet naar JSON of CSV en vervolgens kan worden ingelezen in rapportagetools zoals Power BI. Door de logica in code vast te leggen wordt de rapportage reproduceerbaar, versieerbaar en beter te testen dan handmatig samengestelde Excelbestanden of screenshots van portalen.

Het script ondersteunt een DebugMode waarin geen verbinding wordt gemaakt met de cloud en voorbeelddata wordt teruggegeven. Dit maakt het mogelijk om lokaal de integratie met dashboards, pipelines of documentgeneratietools te testen zonder productiedata te gebruiken. In productiemodus kan het script worden geïntegreerd in een periodieke taak, bijvoorbeeld een geplande run in een beheerautomationomgeving of een DevOps‑pipeline die wekelijks de rapportage ververst. Belangrijk is dat de toegang tot de benodigde API‑rechten strikt wordt beheerd, bij voorkeur via een dedicated service principal met minimale rechten en een goedgekeurde applicatieregistratie. Logbestanden van scriptuitvoeringen en eventuele fouten worden bewaard als onderdeel van de audit‑trail, zodat achteraf kan worden nagegaan welke data ten grondslag lag aan een specifieke briefing. Zo wordt de technische automatisering vanzelf een integraal onderdeel van de bredere governanceketen rond executive security briefings.

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 executive security briefing-rapport voor Microsoft 365. .DESCRIPTION Dit script verzamelt kernindicatoren uit Microsoft 365 ten behoeve van executive security briefings voor bestuurders en directies binnen de Nederlandse publieke sector. Het richt zich op drie hoofdthema's: identity-bescherming, data- en compliancebescherming en security-incidenten. In DebugMode worden geen cloudverbindingen gemaakt en wordt voorbeelddata teruggegeven zodat het script lokaal getest kan worden zonder toegang tot een tenant. .NOTES Filename: executive-security-briefings.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-11-26 Version: 1.0 Related JSON: content/m365/governance/executive-security-briefings.json Category: governance Workload: m365 .LINK https://github.com/m365-tenant-best-practise .EXAMPLE .\executive-security-briefings.ps1 -DebugMode Voert een lokale testrun uit met voorbeelddata zonder verbinding met Microsoft 365. .EXAMPLE .\executive-security-briefings.ps1 Haalt live gegevens op uit Microsoft 365 en retourneert een samenvattend rapportobject. .EXAMPLE .\executive-security-briefings.ps1 | ConvertTo-Json -Depth 5 Exporteert het rapport naar JSON-formaat voor gebruik in dashboards of documentgeneratie. #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph, ExchangeOnlineManagement [CmdletBinding()] param( [Parameter(HelpMessage = "Voer een lokale debug-run uit met voorbeelddata, zonder cloudverbinding.")] [switch]$DebugMode ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Executive security briefings (M365)" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Connect-M365ExecutiveContext { <# .SYNOPSIS Maakt verbinding met Microsoft Graph en Exchange Online (Purview/Defender indirect). .DESCRIPTION Gebruikt Connect-MgGraph voor Graph API en Connect-ExchangeOnline voor compliance/rapportagecmdlets. Deze functie maakt geen verbinding wanneer DebugMode is ingeschakeld. #> [CmdletBinding()] param() if ($DebugMode) { Write-Host "DebugMode: er wordt geen verbinding gemaakt met Microsoft 365." -ForegroundColor Yellow return } Write-Host "Verbinding maken met Microsoft Graph..." -ForegroundColor Gray Connect-MgGraph -Scopes "Policy.Read.All","Directory.Read.All","SecurityEvents.Read.All" -ErrorAction Stop | Out-Null Write-Host "Verbinding maken met Exchange Online (voor compliance/security-rapportages)..." -ForegroundColor Gray Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop | Out-Null } function Get-M365IdentityOverview { <# .SYNOPSIS Haalt kernindicatoren op rondom identiteit en toegangsbeveiliging. .OUTPUTS PSCustomObject met MFA-dekking en conditional access-overzicht. #> [CmdletBinding()] param() if ($DebugMode) { return [PSCustomObject]@{ MfaEnabledUsersPercentage = 92 AdminAccountsWithMfaEnabled = 100 ConditionalAccessPoliciesCount = 18 HighRiskSignInPoliciesEnabled = $true } } # Voorbeeldimplementatie met focus op robuustheid boven volledigheid. # In productie kan dit worden uitgebreid met specifieke queries per organisatie. Write-Host "Ophalen van identity- en MFA-status..." -ForegroundColor Gray # MFA-dekking (vereenvoudigd, afhankelijk van beschikbare licenties/APIs) $users = Get-MgUser -All -Property Id,UserPrincipalName,StrongAuthenticationMethods -ErrorAction SilentlyContinue $totalUsers = ($users | Measure-Object).Count $mfaUsers = ($users | Where-Object { $_.StrongAuthenticationMethods -and $_.StrongAuthenticationMethods.Count -gt 0 } | Measure-Object).Count $mfaPercentage = 0 if ($totalUsers -gt 0) { $mfaPercentage = [Math]::Round(($mfaUsers / $totalUsers) * 100, 2) } # Admins (vereenvoudigd op basis van roltoewijzingen) $adminRoles = @( "Global Administrator", "Privileged Role Administrator", "Security Administrator" ) $adminMembers = @() foreach ($roleName in $adminRoles) { try { $role = Get-MgDirectoryRole -Filter "displayName eq '$roleName'" -ErrorAction SilentlyContinue if ($role) { $members = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -ErrorAction SilentlyContinue $adminMembers += $members } } catch { Write-Host "Kon rol $roleName niet ophalen: $_" -ForegroundColor Yellow } } $adminUserIds = ($adminMembers | Where-Object { $_.AdditionalProperties["userPrincipalName"] } | Select-Object -ExpandProperty Id -Unique) $adminsWithMfa = 0 $totalAdmins = ($adminUserIds | Measure-Object).Count if ($totalAdmins -gt 0) { foreach ($adminId in $adminUserIds) { $user = $users | Where-Object { $_.Id -eq $adminId } if ($user -and $user.StrongAuthenticationMethods -and $user.StrongAuthenticationMethods.Count -gt 0) { $adminsWithMfa++ } } } $adminMfaPercentage = 0 if ($totalAdmins -gt 0) { $adminMfaPercentage = [Math]::Round(($adminsWithMfa / $totalAdmins) * 100, 2) } # Conditional Access (vereenvoudigd; afhankelijk van licenties) $caPolicies = @() try { $caPolicies = Get-MgIdentityConditionalAccessPolicy -ErrorAction SilentlyContinue } catch { Write-Host "Waarschuwing: Conditional Access-policies konden niet worden opgehaald: $_" -ForegroundColor Yellow } $highRiskPoliciesEnabled = $false if ($caPolicies) { $highRiskPoliciesEnabled = $caPolicies | Where-Object { $_.State -eq "enabled" -and $_.Conditions.SignInRiskLevels } | ForEach-Object { $true } | Select-Object -First 1 } return [PSCustomObject]@{ MfaEnabledUsersPercentage = $mfaPercentage AdminAccountsWithMfaEnabled = $adminMfaPercentage ConditionalAccessPoliciesCount = ($caPolicies | Measure-Object).Count HighRiskSignInPoliciesEnabled = [bool]$highRiskPoliciesEnabled } } function Get-M365ComplianceOverview { <# .SYNOPSIS Haalt kernindicatoren op rondom data- en compliancebescherming. .OUTPUTS PSCustomObject met o.a. Secure Score en DLP-/retentie-overzicht. #> [CmdletBinding()] param() if ($DebugMode) { return [PSCustomObject]@{ SecureScoreCurrent = 68 SecureScoreMax = 100 DlpPoliciesConfigured = 7 RetentionPoliciesConfigured = 5 SensitivityLabelsConfigured = 9 HighRiskDlpIncidentsLast30 = 3 } } Write-Host "Ophalen van compliance- en databeschermingsstatus..." -ForegroundColor Gray # Secure Score (via Graph Security; hier vereenvoudigd als placeholder omdat implementatie per omgeving verschilt) $secureScoreCurrent = $null $secureScoreMax = 100 try { $secureScore = Get-MgSecuritySecureScore -Top 1 -ErrorAction SilentlyContinue if ($secureScore) { $secureScoreCurrent = [Math]::Round($secureScore.CurrentScore, 2) $secureScoreMax = [Math]::Round($secureScore.MaxScore, 2) } } catch { Write-Host "Secure Score kon niet worden opgehaald: $_" -ForegroundColor Yellow $secureScoreCurrent = $null } # DLP- en retentieconfiguratie via Security & Compliance PowerShell $dlpPolicies = @() $retentionPolicies = @() $labelPolicies = @() $highRiskDlpCount = 0 try { $dlpPolicies = Get-DlpCompliancePolicy -ErrorAction SilentlyContinue $retentionPolicies = Get-RetentionCompliancePolicy -ErrorAction SilentlyContinue $labelPolicies = Get-LabelPolicy -ErrorAction SilentlyContinue # Vereenvoudigde telling van high severity DLP-incidenten $since = (Get-Date).AddDays(-30) $dlpReports = Get-DlpIncidentReport -StartDate $since -EndDate (Get-Date) -ErrorAction SilentlyContinue if ($dlpReports) { $highRiskDlpCount = ($dlpReports | Where-Object { $_.Severity -eq "High" } | Measure-Object).Count } } catch { Write-Host "Kon DLP/retentiegegevens niet volledig ophalen: $_" -ForegroundColor Yellow } return [PSCustomObject]@{ SecureScoreCurrent = $secureScoreCurrent SecureScoreMax = $secureScoreMax DlpPoliciesConfigured = ($dlpPolicies | Measure-Object).Count RetentionPoliciesConfigured = ($retentionPolicies | Measure-Object).Count SensitivityLabelsConfigured = ($labelPolicies | Measure-Object).Count HighRiskDlpIncidentsLast30 = $highRiskDlpCount } } function Get-M365SecurityIncidentOverview { <# .SYNOPSIS Haalt kernstatistieken op over recente security-incidenten. .OUTPUTS PSCustomObject met aantallen en trendlijnen. #> [CmdletBinding()] param() if ($DebugMode) { return [PSCustomObject]@{ HighSeverityIncidentsLast30 = 4 MediumSeverityIncidentsLast30 = 15 PhishingIncidentsLast30 = 12 CompromisedAccountsLast30 = 2 } } Write-Host "Ophalen van incidentstatistieken..." -ForegroundColor Gray $since = (Get-Date).AddDays(-30) $highSeverity = 0 $mediumSeverity = 0 $phishing = 0 $compromised = 0 try { # Vereenvoudigde query via Microsoft Graph security incidents (waar beschikbaar) $incidents = Get-MgSecurityIncident -Filter "createdDateTime ge $($since.ToString("o"))" -ErrorAction SilentlyContinue if ($incidents) { $highSeverity = ($incidents | Where-Object { $_.Severity -eq "High" } | Measure-Object).Count $mediumSeverity = ($incidents | Where-Object { $_.Severity -eq "Medium" } | Measure-Object).Count $phishing = ($incidents | Where-Object { $_.Classification -like "*Phishing*" } | Measure-Object).Count $compromised = ($incidents | Where-Object { $_.DetectionSource -like "*Identity*" } | Measure-Object).Count } } catch { Write-Host "Incidentgegevens konden niet (volledig) worden opgehaald: $_" -ForegroundColor Yellow } return [PSCustomObject]@{ HighSeverityIncidentsLast30 = $highSeverity MediumSeverityIncidentsLast30 = $mediumSeverity PhishingIncidentsLast30 = $phishing CompromisedAccountsLast30 = $compromised } } function Invoke-ExecutiveSecurityBriefingReport { <# .SYNOPSIS Genereert een samenvattend executive security briefing-rapport. .DESCRIPTION Combineert identity-, compliance- en incidentgegevens tot één managementrapport met samenvattende conclusies en aanbevelingen voor bestuurders. .OUTPUTS PSCustomObject met: - GeneratedAt - IdentityOverview - ComplianceOverview - IncidentOverview - Summary #> [CmdletBinding()] param() Connect-M365ExecutiveContext $identity = Get-M365IdentityOverview $compliance = Get-M365ComplianceOverview $incidents = Get-M365SecurityIncidentOverview $summaryMessages = @() if ($identity.MfaEnabledUsersPercentage -lt 95 -or $identity.AdminAccountsWithMfaEnabled -lt 100) { $summaryMessages += "MFA-dekking is nog niet op het gewenste niveau; vooral voor beheerders is volledige dekking cruciaal." } if ($compliance.SecureScoreCurrent -ne $null -and $compliance.SecureScoreCurrent -lt 60) { $summaryMessages += "Secure Score ligt onder de 60; aanvullende hardeningmaatregelen zijn aanbevolen." } if ($compliance.DlpPoliciesConfigured -lt 1 -or $compliance.RetentionPoliciesConfigured -lt 1) { $summaryMessages += "Niet alle kerncomponenten voor DLP en retentie zijn geconfigureerd; dit beperkt aantoonbare naleving." } if ($incidents.HighSeverityIncidentsLast30 -gt 0 -or $incidents.CompromisedAccountsLast30 -gt 0) { $summaryMessages += "Er zijn recente high severity-incidenten en/of gecompromitteerde accounts; bespreek opvolging en lessons learned." } if ($summaryMessages.Count -eq 0) { $summaryMessages += "De belangrijkste kernindicatoren voor Microsoft 365 laten een stabiel beeld zien; blijf investeren in continue verbetering en periodieke herbeoordeling." } return [PSCustomObject]@{ ScriptName = "executive-security-briefings.ps1" GeneratedAt = Get-Date DebugMode = [bool]$DebugMode IdentityOverview = $identity ComplianceOverview= $compliance IncidentOverview = $incidents Summary = $summaryMessages } } try { $report = Invoke-ExecutiveSecurityBriefingReport $report exit 0 } catch { Write-Error "Fout tijdens het genereren van het executive security briefing-rapport: $_" exit 1 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan } # Exitcodes: # 0 = Rapport succesvol gegenereerd # 1 = Fout tijdens uitvoering

Risico zonder implementatie

Risico zonder implementatie
High: Zonder gestructureerde executive security briefings ontbreekt een aantoonbare informatie- en besluitvormingslijn tussen securityteams en bestuur. Dit vergroot de kans op onderschatting van risico's in Microsoft 365, leidt tot vertraagde of onvoldoende maatregelen en kan bij incidenten of toezichtonderzoeken worden uitgelegd als gebrek aan adequate governance.

Management Samenvatting

Richt een structureel programma voor executive security briefings in waarin objectieve Microsoft 365‑data en heldere kernboodschappen worden gecombineerd tot bestuurlijke rapportages. Dit versterkt governance, versnelt besluitvorming over beveiligingsmaatregelen en helpt bestuurders om aantoonbaar "in control" te zijn over de digitale weerbaarheid van de organisatie.