Microsoft Defender Voor Cloud: Beveiligingswaarschuwingen Logging Configureren

💼 Management Samenvatting

Beveiligingswaarschuwingen logging in Microsoft Defender voor Cloud is essentieel voor het creëren van een complete audit trail, het ondersteunen van forensische onderzoeken, het integreren met SIEM-systemen en het voldoen aan compliance-vereisten. Deze praktijk zorgt ervoor dat alle beveiligingswaarschuwingen worden vastgelegd in Log Analytics-werkruimten voor langetermijnopslag, analyse en rapportage.

Aanbeveling
IMPLEMENTEER BEVEILIGINGSWAARSCHUWINGEN LOGGING
Risico zonder
High
Risk Score
8/10
Implementatie
6u (tech: 2u)
Van toepassing op:
Azure

Zonder adequate logging van beveiligingswaarschuwingen beschikken organisaties niet over een historisch overzicht van beveiligingsincidenten, wat cruciaal is voor forensische onderzoeken na een incident. Forensische analisten kunnen niet achterhalen wanneer en hoe een aanval heeft plaatsgevonden zonder gedetailleerde loggegevens. Daarnaast ontbreekt de mogelijkheid om trends te analyseren over tijd, waardoor organisaties niet kunnen identificeren of bepaalde aanvallen vaker voorkomen of of beveiligingsmaatregelen effectief zijn. Zonder logging kunnen organisaties niet voldoen aan compliance-vereisten die historische bewaarplichten vereisen, zoals de zeven jaar bewaartermijn die vaak wordt vereist voor auditdoeleinden. SIEM-integratie is onmogelijk zonder gestructureerde logging, waardoor security operations centers niet kunnen profiteren van geavanceerde correlatie en detectie. Het ontbreken van logging betekent ook dat organisaties geen bewijs kunnen leveren tijdens audits of juridische procedures. Beveiligingswaarschuwingen logging biedt een complete audit trail die alle waarschuwingen vastlegt met timestamps, resource-informatie, severity-niveaus en aanbevelingen voor remediatie. Deze logs kunnen worden geïntegreerd met SIEM-systemen zoals Microsoft Sentinel, Splunk of QRadar voor geavanceerde analyse en correlatie. Logging ondersteunt compliance door automatische bewaartermijnen te configureren die voldoen aan regelgevende vereisten. Daarnaast biedt logging de mogelijkheid om custom queries te maken voor specifieke analyses en rapportage, wat essentieel is voor executive reporting en trendanalyse.

PowerShell Modules Vereist
Primary API: Azure API
Connection: Connect-AzAccount
Required Modules: Az.Accounts, Az.Security, Az.Resources

Implementatie

Dit artikel beschrijft hoe beveiligingswaarschuwingen logging wordt geconfigureerd in Microsoft Defender voor Cloud binnen de Nederlandse Baseline voor Veilige Cloud. Het behandelt de configuratie van diagnostische instellingen om waarschuwingen naar Log Analytics-werkruimten te exporteren, het instellen van bewaartermijnen die voldoen aan compliance-vereisten, de integratie met SIEM-systemen voor geavanceerde analyse, het maken van custom queries voor specifieke analyses, en het monitoren van de logging-configuratie om te verzekeren dat alle waarschuwingen correct worden vastgelegd. Het artikel biedt concrete technieken voor het configureren van export-instellingen, het valideren van logdata, het opzetten van alerting wanneer logging faalt, en het implementeren van een complete logging-strategie die voldoet aan Nederlandse overheidsvereisten en internationale standaarden.

Vereisten en Voorbereiding

Voor het implementeren van beveiligingswaarschuwingen logging zijn verschillende technische en organisatorische vereisten van toepassing die essentieel zijn voor een succesvolle implementatie en optimale werking van de logging-functionaliteit. Deze vereisten vormen de fundamentele basis voor effectieve logging en zorgen ervoor dat organisaties volledig kunnen profiteren van de logging-capaciteiten die Microsoft Defender voor Cloud biedt. De primaire technische vereiste is dat Microsoft Defender voor Cloud actief moet zijn op alle relevante Azure-abonnementen. Defender voor Cloud genereert de beveiligingswaarschuwingen die worden gelogd, en zonder deze service is logging onmogelijk. Organisaties moeten ervoor zorgen dat Defender voor Cloud minimaal op het basisniveau is ingeschakeld, hoewel het standaardniveau wordt aanbevolen voor volledige functionaliteit en geavanceerde waarschuwingsmogelijkheden. Voor nieuwe implementaties is het raadzaam om eerst Defender voor Cloud te activeren en te verifiëren dat waarschuwingen worden gegenereerd voordat logging wordt geconfigureerd. Een Log Analytics-werkruimte is vereist voor het opslaan van de gelogde waarschuwingen. Deze werkruimte kan een bestaande zijn of een nieuwe die specifiek is aangemaakt voor beveiligingslogging. Voor Nederlandse overheidsorganisaties is het belangrijk dat de werkruimte zich binnen de Europese Unie bevindt om te voldoen aan data-residency vereisten. De werkruimte moet voldoende opslagcapaciteit hebben om logs op te slaan voor de vereiste bewaartermijn, wat vaak minimaal 90 dagen is voor operationele doeleinden en tot 7 jaar voor compliance- en auditdoeleinden. Organisaties moeten daarom de kosten van langetermijnopslag overwegen en mogelijk gebruik maken van Azure Archive Storage voor oudere logs. Voor geautomatiseerde configuratie en monitoring via scripts is PowerShell versie 5.1 of hoger vereist, met de modules Az.Accounts, Az.Security en Az.Resources geïnstalleerd. Deze modules zijn essentieel voor het configureren van diagnostische instellingen, het ophalen van waarschuwingsgegevens, en het beheren van Log Analytics-werkruimten. Moderne organisaties gebruiken vaak PowerShell 7.x voor cross-platform compatibiliteit en betere prestaties, maar de minimale vereiste blijft versie 5.1. Daarnaast is Azure CLI of Azure Portal toegang nodig voor het configureren van diagnostische instellingen en het beheren van werkruimten. Vanuit een beveiligingsperspectief zijn verschillende rollen vereist afhankelijk van de configuratieactiviteiten. Voor het configureren van diagnostische instellingen zijn rollen zoals Security Admin, Contributor of Owner nodig op het abonnement of de resource waarop de instellingen worden toegepast. Voor het lezen van logdata is de rol Log Analytics Reader of Security Reader voldoende. Het is belangrijk om het principe van least privilege toe te passen en alleen de minimale benodigde rechten te verlenen. Organisaties moeten daarom een proces hebben voor het beheren van toegangsrechten en regelmatige reviews uitvoeren om te verifiëren dat alleen geautoriseerde personen toegang hebben tot gevoelige logdata. Naast technische vereisten is een gestructureerd logging-beleid cruciaal. Dit beleid moet duidelijk definiëren welke waarschuwingen worden gelogd, hoe lang logs worden bewaard, wie toegang heeft tot de logs, hoe logs worden beschermd tegen ongeautoriseerde toegang, en hoe logs worden gebruikt voor analyse en rapportage. Het beleid moet ook rekening houden met privacy-vereisten, omdat sommige waarschuwingen mogelijk persoonsgegevens bevatten. Organisaties moeten daarom overwegen hoe logging aansluit bij AVG-vereisten en of bepaalde waarschuwingen moeten worden geanonimiseerd voordat ze worden opgeslagen.

Implementatie en Configuratie

De implementatie van beveiligingswaarschuwingen logging begint met het configureren van diagnostische instellingen in Microsoft Defender voor Cloud. Deze instellingen bepalen welke waarschuwingen worden geëxporteerd naar Log Analytics-werkruimten en hoe deze worden opgeslagen. De configuratie kan worden uitgevoerd via de Azure Portal, PowerShell-scripts of Azure Policy voor geautomatiseerde implementatie op schaal. De eerste stap is het identificeren of aanmaken van een Log Analytics-werkruimte die zal worden gebruikt voor het opslaan van beveiligingswaarschuwingen. Voor Nederlandse overheidsorganisaties moet deze werkruimte zich binnen de Europese Unie bevinden om te voldoen aan data-residency vereisten. De werkruimte moet voldoende opslagcapaciteit hebben en moet worden geconfigureerd met de juiste bewaartermijn. Standaard bewaartermijnen variëren van 30 dagen tot 730 dagen, maar voor compliance-vereisten kunnen langere bewaartermijnen nodig zijn. Organisaties moeten daarom overwegen om gebruik te maken van Azure Archive Storage voor logs die ouder zijn dan de standaard bewaartermijn maar nog steeds moeten worden bewaard voor auditdoeleinden. Binnen Microsoft Defender voor Cloud, navigeer naar de sectie Environment settings en selecteer het specifieke abonnement waarvoor logging moet worden geconfigureerd. Het is belangrijk om te beseffen dat deze configuratie per abonnement wordt toegepast, wat betekent dat organisaties met meerdere abonnementen deze stappen moeten herhalen voor elk abonnement waar logging gewenst is. Binnen de abonnementsinstellingen, klik op de optie Diagnostic settings om toegang te krijgen tot de configuratie voor diagnostische instellingen. Deze sectie bevat opties voor het exporteren van verschillende typen gegevens, inclusief beveiligingswaarschuwingen. Selecteer de optie Security alerts als het type gegevens dat moet worden geëxporteerd. Deze optie zorgt ervoor dat alle beveiligingswaarschuwingen die door Defender voor Cloud worden gegenereerd, worden geëxporteerd naar de geselecteerde Log Analytics-werkruimte. Organisaties kunnen ook kiezen om andere typen gegevens te exporteren, zoals aanbevelingen of compliance-data, afhankelijk van hun specifieke behoeften. Het is belangrijk om te beseffen dat het exporteren van meerdere typen gegevens de opslagkosten kan verhogen, dus organisaties moeten zorgvuldig overwegen welke gegevens daadwerkelijk nodig zijn. Selecteer de Log Analytics-werkruimte waar de waarschuwingen moeten worden opgeslagen. Als er meerdere werkruimten beschikbaar zijn, moet de organisatie beslissen welke werkruimte het meest geschikt is. Factoren om te overwegen zijn onder meer de locatie van de werkruimte (voor data-residency), de bewaartermijn-configuratie, de kosten, en of de werkruimte al wordt gebruikt voor andere logging-doeleinden. Voor organisaties met een gecentraliseerde logging-strategie kan het gebruik van een centrale werkruimte voor alle beveiligingslogging voordelen bieden in termen van beheer en analyse. Configureer de bewaartermijn voor de logs. Deze termijn bepaalt hoe lang logs worden bewaard in de Log Analytics-werkruimte voordat ze automatisch worden verwijderd. Voor operationele doeleinden is een bewaartermijn van 90 dagen vaak voldoende, maar voor compliance-vereisten kunnen langere termijnen nodig zijn. Nederlandse overheidsorganisaties moeten rekening houden met de Archiefwet, die een bewaartermijn van 7 jaar vereist voor bepaalde typen gegevens. Organisaties moeten daarom overwegen om gebruik te maken van Azure Archive Storage voor logs die ouder zijn dan de standaard bewaartermijn maar nog steeds moeten worden bewaard. Na het configureren van alle instellingen, sla de configuratie op voor het abonnement. De wijzigingen worden direct actief en Defender voor Cloud begint automatisch met het exporteren van beveiligingswaarschuwingen naar de geselecteerde Log Analytics-werkruimte. Het is aan te raden om te wachten op de eerste waarschuwing of om een testwaarschuwing te genereren om te verifiëren dat de configuratie correct functioneert en dat waarschuwingen daadwerkelijk worden gelogd. Organisaties moeten ook regelmatig controleren of de logging nog steeds actief is en of er geen fouten zijn opgetreden tijdens het exportproces.

Monitoring en Verificatie

Gebruik PowerShell-script security-alerts-logging.ps1 (functie Invoke-Monitoring) – Verifieert of beveiligingswaarschuwingen logging correct is geconfigureerd en actief is.

Effectieve monitoring en verificatie zijn essentieel voor het verzekeren dat beveiligingswaarschuwingen logging correct functioneert en dat alle waarschuwingen worden vastgelegd zoals bedoeld. Zonder monitoring blijft het onduidelijk of logging actief is, of er fouten zijn opgetreden tijdens het exportproces, of logs correct worden opgeslagen, en of de configuratie nog steeds voldoet aan de vereisten. Het primaire dashboard voor monitoring is de Azure Portal, waar organisaties de status van diagnostische instellingen kunnen bekijken en kunnen zien of er fouten zijn opgetreden tijdens het exportproces. Deze informatie is beschikbaar in de sectie Diagnostic settings van elk abonnement waar logging is geconfigureerd. Organisaties moeten dit dashboard regelmatig raadplegen, bij voorkeur wekelijks, om te verifiëren dat logging nog steeds actief is en dat er geen problemen zijn opgetreden. Het is belangrijk om te beseffen dat fouten in diagnostische instellingen niet altijd zichtbaar zijn in de portal, dus organisaties moeten ook gebruik maken van andere monitoringmethoden. Wekelijkse verificatie van logdata vormt een kritieke activiteit in het monitoringproces. Elke week moeten organisaties controleren of nieuwe waarschuwingen daadwerkelijk worden vastgelegd in de Log Analytics-werkruimte. Dit kan worden gedaan door een query uit te voeren in Log Analytics die de meest recente waarschuwingen ophaalt en verifieert dat deze overeenkomen met de waarschuwingen die zichtbaar zijn in Defender voor Cloud. Als er discrepanties worden gevonden, moet worden onderzocht wat de oorzaak is. Mogelijke oorzaken kunnen zijn: diagnostische instellingen zijn uitgeschakeld, er zijn fouten opgetreden tijdens het exportproces, of de Log Analytics-werkruimte heeft onvoldoende opslagcapaciteit. Maandelijkse analyse van logging-trends gaat verder dan het verifiëren dat logging actief is en onderzoekt patronen over tijd. Deze analyse identificeert of het aantal gelogde waarschuwingen toeneemt, afneemt of stabiel blijft, en probeert de onderliggende oorzaken te begrijpen. Een toename in het aantal waarschuwingen kan bijvoorbeeld wijzen op een toename van beveiligingsbedreigingen, nieuwe services die zijn ingeschakeld zonder beveiligingsconfiguratie, of wijzigingen in de beveiligingsconfiguratie die nieuwe waarschuwingen hebben geactiveerd. Door deze trends te begrijpen, kunnen organisaties proactief actie ondernemen voordat problemen escaleren. Daarnaast helpt trendanalyse bij het identificeren van seizoenspatronen of andere cyclische effecten die van invloed zijn op het aantal waarschuwingen. Het monitoren van de opslagcapaciteit en kosten is cruciaal voor het waarborgen dat logging op de lange termijn haalbaar blijft. Log Analytics-werkruimten hebben beperkte opslagcapaciteit, en wanneer deze capaciteit wordt bereikt, kunnen nieuwe logs niet meer worden opgeslagen. Organisaties moeten daarom regelmatig controleren hoeveel opslagcapaciteit wordt gebruikt en of er voldoende ruimte is voor toekomstige logs. Daarnaast moeten organisaties de kosten van logging monitoren, omdat langetermijnopslag aanzienlijke kosten kan opleveren. Voor organisaties met strikte budgetbeperkingen kan het nodig zijn om de bewaartermijn te verkorten of om gebruik te maken van Azure Archive Storage voor oudere logs. Driemaandelijkse compliance-verificatie biedt management inzicht in de nalevingsstatus van logging-vereisten. Deze verificatie moet controleren of logging voldoet aan alle relevante compliance-vereisten, zoals de bewaartermijn, data-residency, en toegangscontroles. Voor Nederlandse overheidsorganisaties is dit bijzonder relevant omdat het helpt bij het aantonen van proactief logging-beheer aan toezichthouders en omdat het inzicht geeft in de nalevingsstatus van logging-vereisten. Deze verificatie moet worden gedocumenteerd en moet worden gedeeld met relevante stakeholders, inclusief compliance-officers en management.

Compliance en Framework Mapping

Beveiligingswaarschuwingen logging draagt direct bij aan het voldoen aan verschillende beveiligingsstandaarden en regelgeving die van toepassing zijn op Nederlandse overheidsorganisaties. Het systematisch loggen van beveiligingswaarschuwingen is een concrete manier om aan te tonen dat organisaties proactief werken aan het vastleggen van beveiligingsincidenten en dat zij beschikken over de benodigde gegevens voor forensische onderzoeken en audits. De Azure Security Benchmark vormt de primaire basis voor beveiligingslogging in Azure-omgevingen, en logging betekent daarom automatisch dat meer benchmark-controles worden geïmplementeerd. Deze benchmark is ontwikkeld door Microsoft in samenwerking met beveiligingsexperts en bevat best practices voor cloudbeveiliging die zijn afgestemd op bekende beveiligingsframeworks zoals CIS, NIST, en ISO. Elke logging-configuratie is gekoppeld aan een of meer controles uit de Azure Security Benchmark, waardoor organisaties direct kunnen zien welke benchmark-controles worden geadresseerd door het implementeren van specifieke logging-configuraties. Door systematisch te werken aan logging, implementeren organisaties automatisch meer benchmark-controles en verbeteren ze hun algehele compliance met deze standaard. CIS Azure Foundations Benchmark mapping biedt een directe koppeling tussen logging-configuraties en CIS-controles. De Center for Internet Security heeft een specifieke benchmark ontwikkeld voor Azure-omgevingen, en veel logging-configuraties corresponderen direct met deze CIS-controles. Organisaties die moeten voldoen aan CIS-vereisten kunnen hun logging-configuratie gebruiken als indicator voor hun CIS-naleving, hoewel aanvullende verificatie vaak nog steeds nodig is voor formele certificering. Door te focussen op logging, implementeren organisaties automatisch veel CIS-controles, wat het certificeringsproces versnelt en vereenvoudigt. ISO 27001 controle coverage wordt ondersteund door logging, omdat de Azure Security Benchmark is afgestemd op ISO 27001:2013 en ISO 27001:2022 controles. Veel logging-configuraties adresseren specifieke ISO 27001 controles, met name op het gebied van logging en monitoring (A.12.4), beveiligingsincidenten (A.16), en compliance (A.18). Organisaties die ISO 27001 gecertificeerd zijn of willen worden, kunnen logging gebruiken als onderdeel van hun continue verbeteringsproces en als bewijs van geïmplementeerde beveiligingscontroles. Het is belangrijk om te benadrukken dat logging niet alleen gaat om het vastleggen van gegevens, maar ook om het kunnen aantonen dat deze gegevens effectief worden gebruikt voor beveiligingsdoeleinden. NIS2 requirements tracking wordt steeds belangrijker voor Nederlandse organisaties, gezien de implementatie van de NIS2-richtlijn in de Europese Unie. NIS2 vereist dat essentiële en belangrijke entiteiten passende technische en organisatorische maatregelen nemen om de beveiliging van netwerk- en informatiesystemen te waarborgen, inclusief logging en monitoring. Logging-configuraties adresseren veel van deze vereisten, met name op het gebied van incidentdetectie, forensische analyse, en compliance-rapportage. Organisaties die onder NIS2 vallen, kunnen logging gebruiken als onderdeel van hun risicobeheerproces en als bewijs van geïmplementeerde beveiligingsmaatregelen. Het systematisch loggen van beveiligingswaarschuwingen demonstreert dat organisaties proactief werken aan het vastleggen van beveiligingsincidenten, wat een belangrijk aspect is van NIS2-compliance. BIO themes alignment is specifiek relevant voor Nederlandse overheidsorganisaties. De Baseline Informatiebeveiliging Overheid (BIO) bevat thema's en maatregelen die overheidsorganisaties moeten implementeren. Logging-configuraties overlappen significant met BIO-maatregelen, met name op het gebied van logging en monitoring (12.01), incidentbeheer (16.01), en compliance (18.01). Overheidsorganisaties kunnen logging gebruiken als ondersteuning bij het aantonen van BIO-naleving, hoewel aanvullende documentatie en procesbeschrijvingen nog steeds nodig zijn voor volledige compliance. Het is belangrijk om te erkennen dat logging een hulpmiddel is voor compliance, maar geen vervanging voor formele compliance-audits. Organisaties moeten nog steeds regelmatige audits uitvoeren, documentatie bijhouden, en processen documenteren om volledige compliance aan te tonen.

Remediatie en Herstel

Gebruik PowerShell-script security-alerts-logging.ps1 (functie Invoke-Remediation) – Configureert beveiligingswaarschuwingen logging indien deze niet actief is.

Wanneer beveiligingswaarschuwingen logging niet effectief is of wanneer logs niet correct worden vastgelegd, is onmiddellijke actie vereist om de logging-functionaliteit te herstellen. Het ontbreken van effectieve logging betekent dat organisaties kansen missen om beveiligingsincidenten te analyseren en dat zij mogelijk niet voldoen aan compliance-vereisten. De eerste stap in remediatie is het identificeren van de oorzaak van het probleem. Mogelijke oorzaken kunnen zijn: diagnostische instellingen zijn uitgeschakeld, er zijn fouten opgetreden tijdens het exportproces, de Log Analytics-werkruimte heeft onvoldoende opslagcapaciteit, of er zijn problemen met de netwerkconnectiviteit tussen Defender voor Cloud en de Log Analytics-werkruimte. Organisaties moeten hun logging-configuratie analyseren om te begrijpen wanneer en waarom logging is gestopt, en moeten hun diagnostische instellingen reviewen om te identificeren welke instellingen mogelijk moeten worden aangepast. Zodra de oorzaken zijn geïdentificeerd, moeten organisaties een prioriteerde remediatieplan ontwikkelen. Dit plan moet focussen op het herstellen van logging-functionaliteit eerst, gevolgd door het verifiëren dat logs correct worden vastgelegd, en ten slotte het implementeren van monitoring om te voorkomen dat het probleem opnieuw optreedt. Het plan moet ook rekening houden met de beschikbare resources en moet realistische tijdlijnen bevatten voor het implementeren van verschillende remediaties. Voor veel problemen kan remediatie worden geautomatiseerd via PowerShell-scripts of Azure Policy. Automatische remediatie is vooral effectief voor het herstellen van diagnostische instellingen die per ongeluk zijn uitgeschakeld, het configureren van nieuwe werkruimten wanneer bestaande werkruimten onvoldoende capaciteit hebben, en het implementeren van monitoring om te waarschuwen wanneer logging faalt. Het gebruik van geautomatiseerde remediatie zorgt voor consistentie en vermindert de kans op menselijke fouten. Organisaties moeten echter voorzichtig zijn bij het toepassen van geautomatiseerde remediatie op bestaande productieomgevingen, omdat dit impact kan hebben op bedrijfsprocessen. Sommige problemen vereisen handmatige interventie of goedkeuring voordat ze kunnen worden opgelost. Dit geldt met name voor problemen die betrekking hebben op opslagcapaciteit, omdat het toevoegen van opslagcapaciteit kosten kan opleveren en daarom budgetgoedkeuring kan vereisen. In dergelijke gevallen moet het beveiligingsteam samenwerken met resource-eigenaren en financiële afdelingen om de juiste oplossing te bepalen en te implementeren. Het is belangrijk om deze samenwerking te faciliteren en om duidelijke communicatie te hebben over de beveiligingsvoordelen en mogelijke impact op budgetten. Na implementatie van remediatie is het belangrijk om te verifiëren dat logging daadwerkelijk is hersteld en dat logs correct worden vastgelegd. Dit kan enige tijd duren, omdat Defender voor Cloud periodiek waarschuwingen genereert en exporteert. Organisaties moeten een proces hebben om de status van logging te volgen en te verifiëren dat logs daadwerkelijk worden vastgelegd. Als logging niet heeft geleid tot de verwachte resultaten, moet worden onderzocht wat de oorzaak is en moeten aanvullende stappen worden ondernomen. In sommige gevallen kan het nodig zijn om historische logs te herstellen wanneer logging voor een bepaalde periode niet actief was. Dit is echter vaak niet mogelijk, omdat logs die niet zijn vastgelegd verloren zijn gegaan. Organisaties moeten daarom proactief monitoren om te voorkomen dat logging stopt, en moeten alerting implementeren die onmiddellijk waarschuwt wanneer logging faalt. Deze proactieve aanpak is essentieel voor het waarborgen dat alle beveiligingswaarschuwingen worden vastgelegd en dat organisaties beschikken over de benodigde gegevens voor forensische onderzoeken en compliance.

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
<# ================================================================================ AZURE POWERSHELL SCRIPT - Nederlandse Baseline voor Veilige Cloud ================================================================================ .SYNOPSIS Microsoft Defender voor Cloud: Beveiligingswaarschuwingen Logging .DESCRIPTION BIO Baseline - Controle 12.01.01, 16.01.01 ISO 27001 - Controle A.12.4.1, A.16.1.2 CIS Azure Foundations Benchmark - Control 5.2.1 NIS2 Richtlijn - Artikel 21 Verifieert of beveiligingswaarschuwingen logging correct is geconfigureerd en exporteert naar Log Analytics-werkruimten. .NOTES Filename: security-alerts-logging.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Related JSON: content/azure/defender-cloud/security-alerts-logging.json BIO Control: 12.01.01, 16.01.01 ISO 27001: A.12.4.1, A.16.1.2 CIS Control: 5.2.1 NIS2 Article: 21 .EXAMPLE .\security-alerts-logging.ps1 -Monitoring Voert een controle uit op alle abonnementen en rapporteert de status van beveiligingswaarschuwingen logging. .EXAMPLE .\security-alerts-logging.ps1 -Remediation -WorkspaceId "/subscriptions/xxx/resourcegroups/xxx/providers/microsoft.operationalinsights/workspaces/xxx" Configureert beveiligingswaarschuwingen logging voor alle abonnementen naar de opgegeven Log Analytics-werkruimte. #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Security, Az.Resources, Az.Monitor [CmdletBinding()] param( [Parameter(HelpMessage = "Toon wat er zou gebeuren zonder wijzigingen door te voeren")] [switch]$WhatIf, [Parameter(HelpMessage = "Voer monitoring en rapportage uit")] [switch]$Monitoring, [Parameter(HelpMessage = "Configureer beveiligingswaarschuwingen logging")] [switch]$Remediation, [Parameter(HelpMessage = "Herstel de configuratie (niet aanbevolen)")] [switch]$Revert, [Parameter(HelpMessage = "Resource ID van de Log Analytics-werkruimte voor export")] [string]$WorkspaceId ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' $PolicyName = "Beveiligingswaarschuwingen Logging" function Connect-RequiredServices { <# .SYNOPSIS Maakt verbinding met Azure-services indien nodig. #> [CmdletBinding()] param() try { if (-not (Get-AzContext)) { Write-Verbose "Geen actieve Azure-sessie gevonden. Verbinden..." Connect-AzAccount -ErrorAction Stop | Out-Null Write-Verbose "Succesvol verbonden met Azure" } else { Write-Verbose "Azure-sessie is al actief" } } catch { Write-Error "Fout bij verbinden met Azure: $_" throw } } function Test-Compliance { <# .SYNOPSIS Controleert of beveiligingswaarschuwingen logging is geconfigureerd. .OUTPUTS PSCustomObject met compliance-status per abonnement. #> [CmdletBinding()] param() Write-Verbose "Compliance-controle uitvoeren voor: $PolicyName..." $result = [PSCustomObject]@{ ScriptName = "security-alerts-logging" PolicyName = $PolicyName IsCompliant = $false TotalResources = 0 CompliantCount = 0 NonCompliantCount = 0 Details = @() Recommendations = @() Timestamp = Get-Date } try { $subscriptions = Get-AzSubscription | Where-Object { $_.State -eq 'Enabled' } $result.TotalResources = $subscriptions.Count Write-Verbose "Gevonden $($subscriptions.Count) actieve abonnement(en)" foreach ($sub in $subscriptions) { try { Set-AzContext -SubscriptionId $sub.Id -ErrorAction Stop | Out-Null Write-Verbose "Controleren abonnement: $($sub.Name) ($($sub.Id))" # Controleer diagnostische instellingen voor Security Center # Security alerts worden geëxporteerd via diagnostische instellingen op het Security Center resource $securityCenterResourceId = "/subscriptions/$($sub.Id)/providers/Microsoft.Security/locations/global" # Probeer diagnostische instellingen op te halen $diagnosticSettings = Get-AzDiagnosticSetting -ResourceId $securityCenterResourceId -ErrorAction SilentlyContinue $hasLogging = $false $workspaceName = "Niet geconfigureerd" $retentionDays = 0 if ($diagnosticSettings) { # Controleer of Security Alerts zijn ingeschakeld foreach ($setting in $diagnosticSettings) { if ($setting.Logs) { $securityAlertsLog = $setting.Logs | Where-Object { $_.Category -eq "SecurityAlert" -or $_.Category -eq "SecurityAlerts" -or $_.CategoryGroup -like "*Security*" } if ($securityAlertsLog -and $securityAlertsLog.Enabled) { $hasLogging = $true # Haal werkruimte informatie op if ($setting.WorkspaceId) { $workspaceResource = $setting.WorkspaceId -replace '.*workspaces/', '' $workspaceName = $workspaceResource } # Haal retentie op if ($securityAlertsLog.RetentionPolicy) { $retentionDays = $securityAlertsLog.RetentionPolicy.Days } break } } } } # Alternatieve check: controleer via Security Center API if (-not $hasLogging) { try { # Probeer via Security Center settings $securitySettings = Get-AzSecuritySetting -ErrorAction SilentlyContinue # Deze check is beperkt, maar kan aanvullende informatie bieden } catch { Write-Verbose "Kon Security Center settings niet ophalen: $_" } } if ($hasLogging) { $result.CompliantCount++ $retentionInfo = if ($retentionDays -gt 0) { "$retentionDays dagen" } else { "Standaard" } $result.Details += [PSCustomObject]@{ SubscriptionName = $sub.Name SubscriptionId = $sub.Id Status = "Compliant" Message = "✓ Abonnement '$($sub.Name)': Beveiligingswaarschuwingen logging is geconfigureerd" Workspace = $workspaceName Retention = $retentionInfo } } else { $result.NonCompliantCount++ $result.Details += [PSCustomObject]@{ SubscriptionName = $sub.Name SubscriptionId = $sub.Id Status = "Non-Compliant" Message = "✗ Abonnement '$($sub.Name)': Beveiligingswaarschuwingen logging is NIET geconfigureerd" Workspace = "Niet geconfigureerd" Retention = "N/A" } $result.Recommendations += "Configureer beveiligingswaarschuwingen logging voor '$($sub.Name)' via Diagnostic settings" } } catch { $result.NonCompliantCount++ $result.Details += [PSCustomObject]@{ SubscriptionName = $sub.Name SubscriptionId = $sub.Id Status = "Error" Message = "✗ Abonnement '$($sub.Name)': Fout bij controleren - $($_.Exception.Message)" Workspace = "Onbekend" Retention = "Onbekend" } Write-Warning "Fout bij controleren abonnement '$($sub.Name)': $_" } } $result.IsCompliant = ($result.NonCompliantCount -eq 0) } catch { Write-Error "Fout tijdens compliance-controle: $_" $result.Details += [PSCustomObject]@{ SubscriptionName = "Error" SubscriptionId = "Error" Status = "Error" Message = "ERROR: $($_.Exception.Message)" Workspace = "Onbekend" Retention = "Onbekend" } } return $result } function Invoke-Remediation { <# .SYNOPSIS Configureert beveiligingswaarschuwingen logging indien deze niet actief is. #> [CmdletBinding(SupportsShouldProcess)] param() Write-Host "`nRemediatie starten voor: $PolicyName..." -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan if (-not $WorkspaceId) { Write-Host "[WAARSCHUWING] Geen Log Analytics-werkruimte opgegeven" -ForegroundColor Yellow Write-Host "Gebruik -WorkspaceId om de resource ID van de Log Analytics-werkruimte op te geven" -ForegroundColor Yellow Write-Host "Voorbeeld: -WorkspaceId '/subscriptions/xxx/resourcegroups/xxx/providers/microsoft.operationalinsights/workspaces/xxx'" -ForegroundColor Gray return } try { $fixed = 0 $failed = 0 $skipped = 0 $subscriptions = Get-AzSubscription | Where-Object { $_.State -eq 'Enabled' } foreach ($sub in $subscriptions) { try { Set-AzContext -SubscriptionId $sub.Id -ErrorAction Stop | Out-Null Write-Verbose "Verwerken abonnement: $($sub.Name)" # Controleer huidige status $result = Test-Compliance $currentSub = $result.Details | Where-Object { $_.SubscriptionId -eq $sub.Id } if ($currentSub -and $currentSub.Status -eq "Compliant") { Write-Host " [OK] Logging al geconfigureerd: $($sub.Name)" -ForegroundColor Green Write-Host " Werkruimte: $($currentSub.Workspace)" -ForegroundColor Gray $skipped++ } else { # Configureer diagnostische instellingen $securityCenterResourceId = "/subscriptions/$($sub.Id)/providers/Microsoft.Security/locations/global" $settingName = "SecurityAlertsExport" # Maak log configuratie voor Security Alerts $logConfig = New-AzDiagnosticSettingLogSettingsObject -Enabled $true -CategoryGroup "audit" # Probeer diagnostische instelling te maken try { Set-AzDiagnosticSetting ` -ResourceId $securityCenterResourceId ` -Name $settingName ` -WorkspaceId $WorkspaceId ` -Log $logConfig ` -ErrorAction Stop | Out-Null Write-Host " [OK] Logging geconfigureerd: $($sub.Name)" -ForegroundColor Green Write-Host " Werkruimte: $WorkspaceId" -ForegroundColor Gray $fixed++ } catch { Write-Host " ✗ Mislukt voor $($sub.Name): $($_.Exception.Message)" -ForegroundColor Red Write-Warning "Fout bij configureren logging voor abonnement '$($sub.Name)': $_" $failed++ } } } catch { Write-Host " ✗ Mislukt voor $($sub.Name): $($_.Exception.Message)" -ForegroundColor Red Write-Warning "Fout bij remediatie voor abonnement '$($sub.Name)': $_" $failed++ } } Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "[INFO] Beveiligingswaarschuwingen Logging Status" -ForegroundColor Cyan if ($fixed -gt 0) { Write-Host "[OK] Geconfigureerd: $fixed abonnement(en)" -ForegroundColor Green } if ($skipped -gt 0) { Write-Host "[INFO] Al geconfigureerd: $skipped abonnement(en)" -ForegroundColor Gray } if ($failed -gt 0) { Write-Host "[WAARSCHUWING] Mislukt: $failed abonnement(en)" -ForegroundColor Yellow } Write-Host "`nBelangrijke opmerkingen:" -ForegroundColor Cyan Write-Host " • Beveiligingswaarschuwingen worden nu geëxporteerd naar Log Analytics" -ForegroundColor Gray Write-Host " • Configureer bewaartermijn in Log Analytics-werkruimte (minimaal 90 dagen)" -ForegroundColor Gray Write-Host " • Voor compliance: overweeg 7 jaar bewaartermijn via Azure Archive Storage" -ForegroundColor Gray Write-Host " • Verifieer regelmatig dat logs correct worden vastgelegd" -ForegroundColor Gray Write-Host " • Gebruik KQL queries in Log Analytics om waarschuwingen te analyseren" -ForegroundColor Gray } catch { Write-Error "Remediatie mislukt: $_" throw } } function Invoke-Monitoring { <# .SYNOPSIS Voert uitgebreide monitoring en rapportage uit. #> [CmdletBinding()] param() $result = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "Abonnementen: $($result.TotalResources)" -ForegroundColor White Write-Host "Logging geconfigureerd: $($result.CompliantCount)" -ForegroundColor Green Write-Host "Logging niet geconfigureerd: $($result.NonCompliantCount)" -ForegroundColor $(if ($result.NonCompliantCount -gt 0) { 'Red' } else { 'Green' }) Write-Host "Tijdstip controle: $($result.Timestamp.ToString('yyyy-MM-dd HH:mm:ss'))" -ForegroundColor Gray if ($result.Details) { Write-Host "`nDetails per abonnement:" -ForegroundColor Yellow foreach ($detail in $result.Details) { $color = switch ($detail.Status) { "Compliant" { "Green" } "Non-Compliant" { "Red" } "Error" { "Yellow" } default { "Gray" } } Write-Host " $($detail.Message)" -ForegroundColor $color if ($detail.Workspace -and $detail.Workspace -ne "Niet geconfigureerd" -and $detail.Workspace -ne "Onbekend") { Write-Host " Werkruimte: $($detail.Workspace)" -ForegroundColor Gray } if ($detail.Retention -and $detail.Retention -ne "N/A" -and $detail.Retention -ne "Onbekend") { Write-Host " Bewaartermijn: $($detail.Retention)" -ForegroundColor Gray } } } if ($result.Recommendations) { Write-Host "`nAanbevelingen:" -ForegroundColor Yellow foreach ($recommendation in $result.Recommendations) { Write-Host " • $recommendation" -ForegroundColor Gray } } Write-Host "`nCompliance Status: " -NoNewline -ForegroundColor White if ($result.IsCompliant) { Write-Host "[OK] COMPLIANT" -ForegroundColor Green Write-Host "`nAlle abonnementen hebben beveiligingswaarschuwingen logging geconfigureerd." -ForegroundColor Green Write-Host "Verifieer regelmatig dat logs correct worden vastgelegd in Log Analytics." -ForegroundColor Green } else { Write-Host "[FAIL] NON-COMPLIANT" -ForegroundColor Red Write-Host "`n$($result.NonCompliantCount) abonnement(en) hebben geen beveiligingswaarschuwingen logging geconfigureerd." -ForegroundColor Red Write-Host "Configureer logging via -Remediation met -WorkspaceId parameter." -ForegroundColor Yellow } return $result } function Invoke-Revert { <# .SYNOPSIS Herstelt de configuratie (niet aanbevolen). #> [CmdletBinding(SupportsShouldProcess)] param() Write-Host "`n⚠️ WAARSCHUWING: Beveiligingswaarschuwingen logging uitschakelen wordt NIET aanbevolen" -ForegroundColor Yellow Write-Host "Dit verhoogt het risico op niet-naleving van compliance-vereisten." -ForegroundColor Yellow Write-Host "Organisaties missen historische data voor forensische onderzoeken." -ForegroundColor Yellow Write-Host "`nLET OP: Dit wordt sterk afgeraden en kan leiden tot compliance-problemen." -ForegroundColor Red } # Hoofdscript try { Write-Host "" Write-Host "========================================" -ForegroundColor Cyan Write-Host "Microsoft Defender voor Cloud" -ForegroundColor Cyan Write-Host "Beveiligingswaarschuwingen Logging" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Connect-RequiredServices if ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { if ($WhatIf) { Write-Host "`n=== WHATIF MODUS ===" -ForegroundColor Yellow $result = Test-Compliance Write-Host "Beveiligingswaarschuwingen logging zou worden geconfigureerd voor $($result.TotalResources) abonnement(en)" -ForegroundColor Yellow if ($WorkspaceId) { Write-Host "Werkruimte: $WorkspaceId" -ForegroundColor Yellow } } else { Invoke-Remediation } } elseif ($Revert) { Invoke-Revert } else { # Standaard: basis compliance-controle $result = Test-Compliance Write-Host "`nCompliance Check: $PolicyName" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan if ($result.IsCompliant) { Write-Host "Status: [OK] COMPLIANT" -ForegroundColor Green Write-Host "`nAlle $($result.TotalResources) abonnement(en) hebben beveiligingswaarschuwingen logging geconfigureerd." -ForegroundColor Green } else { Write-Host "Status: [FAIL] NON-COMPLIANT" -ForegroundColor Red Write-Host "`n$($result.NonCompliantCount) van $($result.TotalResources) abonnement(en) hebben geen logging geconfigureerd." -ForegroundColor Red } if ($result.Details) { Write-Host "`nDetails:" -ForegroundColor Yellow $result.Details | ForEach-Object { Write-Host " $($_.Message)" -ForegroundColor Gray } } Write-Host "`nGebruik -Monitoring voor uitgebreide rapportage" -ForegroundColor Gray Write-Host "Gebruik -Remediation -WorkspaceId <resource-id> om logging te configureren" -ForegroundColor Gray } } catch { Write-Error "Fout in security-alerts-logging.ps1: $_" exit 1 } finally { Write-Host "" Write-Host "========================================" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder adequate logging van beveiligingswaarschuwingen beschikken organisaties niet over een historisch overzicht van beveiligingsincidenten, wat cruciaal is voor forensische onderzoeken na een incident. Forensische analisten kunnen niet achterhalen wanneer en hoe een aanval heeft plaatsgevonden zonder gedetailleerde loggegevens. Daarnaast ontbreekt de mogelijkheid om trends te analyseren over tijd, waardoor organisaties niet kunnen identificeren of bepaalde aanvallen vaker voorkomen of of beveiligingsmaatregelen effectief zijn. Zonder logging kunnen organisaties niet voldoen aan compliance-vereisten die historische bewaarplichten vereisen, zoals de zeven jaar bewaartermijn die vaak wordt vereist voor auditdoeleinden. SIEM-integratie is onmogelijk zonder gestructureerde logging, waardoor security operations centers niet kunnen profiteren van geavanceerde correlatie en detectie. Het risico is hoog - voornamelijk gerelateerd aan forensische analyse, compliance en incidentrespons. Aanbevolen voor alle organisaties die beveiligingswaarschuwingen moeten vastleggen voor analyse en compliance.

Management Samenvatting

Beveiligingswaarschuwingen logging in Microsoft Defender voor Cloud exporteert alle beveiligingswaarschuwingen naar Log Analytics-werkruimten voor langetermijnopslag, analyse en rapportage. Essentieel voor forensische onderzoeken, SIEM-integratie en compliance. Configuratie: Defender voor Cloud → Diagnostic settings → Security alerts exporteren naar Log Analytics. Bewaartermijn: minimaal 90 dagen voor operationeel gebruik, tot 7 jaar voor compliance. Implementatie: 6 uur (2 technisch, 4 organisatorisch). Doorlopend: 4 uur per maand (0,1 FTE) voor monitoring en verificatie. Kritiek voor volwassen security operations en compliance.