De configuratie van beveiligingscontactpersonen zorgt ervoor dat beveiligingswaarschuwingen van Microsoft Defender voor Cloud de juiste personen per abonnement bereiken voor onmiddellijke incidentrespons.
Aanbeveling
IMPLEMENTEER PER ABONNEMENT
Risico zonder
High
Risk Score
7/10
Implementatie
1.5u (tech: 1u)
Van toepassing op:
✓ Azure Subscriptions
Zonder beveiligingscontactpersonen ontstaan er kritieke problemen: waarschuwingen gaan verloren omdat er geen ontvangers zijn geconfigureerd, incidentrespons wordt uren of dagen vertraagd omdat niemand op de hoogte wordt gesteld, er is geen verantwoordelijkheid omdat onduidelijk is wie moet reageren, en er ontstaan compliance-hiaten omdat NIS2-meldingsvereisten niet worden nageleefd. Met beveiligingscontactpersonen worden waarschuwingen onmiddellijk afgeleverd, is er duidelijke verantwoordelijkheid, worden meerdere personen tegelijkertijd geïnformeerd, en wordt er een audittrail bijgehouden voor compliance-doeleinden.
PowerShell Modules Vereist
Primary API: Azure API Connection:Connect-AzAccount Required Modules: Az.Accounts, Az.Security
Implementatie
Beveiligingscontactpersonen worden per abonnement ingesteld en bestaan uit een primair e-mailadres voor het beveiligingsteam via een distributielijst, secundaire e-mailadressen voor abonnementeigenaren en het beveiligingsoperatiecentrum, een optioneel telefoonnummer voor kritieke waarschuwingen, en waarschuwingsvoorkeuren waarbij minimaal hoge ernst wordt geselecteerd. Deze configuratie is specifiek per abonnement en erft niet automatisch van de Defender voor Cloud e-mailnotificaties op tenantniveau. Voor tenantbrede configuratie raadpleeg het artikel over aanvullende e-mailadressen op Defender-niveau.
Implementatie
Gebruik PowerShell-script subscription-security-contacts.ps1 (functie Invoke-Implementation) – Implementeren.
Compliance en Audit
Toezicht en controle
Gebruik PowerShell-script subscription-security-contacts.ps1 (functie Invoke-Monitoring) – Controleren.
Remediatie
Gebruik PowerShell-script subscription-security-contacts.ps1 (functie Invoke-Remediation) – Herstellen.
Compliance & Frameworks
CIS M365: Control Defender (L1) - Configuratie van beveiligingscontactpersonen
BIO: 16.01.01 - Incidentbeheer - Contactmelding
ISO 27001:2022: A.16.1.2 - Rapporteren van beveiligingsgebeurtenissen
NIS2: Artikel - Contactpersonen voor incidentmelding
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
Subscription Security Contacts
.DESCRIPTION
Controleert security contacts per subscription.
.NOTES
Filename: subscription-security-contacts.ps1
Author: Nederlandse Baseline voor Veilige Cloud
Version: 1.0
CIS Control: 10.6#>#Requires -Version 5.1#Requires -Modules Az.Accounts, Az.Security
[CmdletBinding()]
param([Parameter()][switch]$Monitoring)
$ErrorActionPreference = 'Stop'
$PolicyName = "Subscription Security Contacts"
function Connect-RequiredServices { if (-not (Get-AzContext)) { Connect-AzAccount | Out-Null } }
functionTest-Compliance {
$subscriptions = Get-AzSubscription | Where-Object { $_.State -eq 'Enabled' }
$result = @{ Total = $subscriptions.Count; Configured = 0 }
foreach ($sub in $subscriptions) {
Set-AzContext -SubscriptionId $sub.Id | Out-Null
$contacts = Get-AzSecurityContact -ErrorAction SilentlyContinue
if ($contacts -and $contacts.Email) { $result.Configured++ }
}
return$result
}
try {
Connect-RequiredServices
if ($Monitoring) {
$r = Test-ComplianceWrite-Host "`n========================================" -ForegroundColor Cyan
Write-Host "$PolicyName" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Subscriptions: $($r.Total)" -ForegroundColor White
Write-Host "With Security Contacts: $($r.Configured)" -ForegroundColor $(if ($r.Configured -eq $r.Total) { 'Green' } else { 'Yellow' })
if ($r.Configured -lt $r.Total) {
Write-Host "`n⚠️ $($r.Total - $r.Configured) subscription(s) zonder security contacts" -ForegroundColor Yellow
}
}
else {
$r = Test-ComplianceWrite-Host "`nSecurity Contacts: $($r.Configured)/$($r.Total)"
}
}
catch { Write-Error$_; exit 1 }
# ================================================================================
# Standaard Invoke-* Functions (Auto-generated)
# ================================================================================
function Invoke-Implementation {
<#
.SYNOPSIS
Implementeert de configuratie
#>
[CmdletBinding()]
param()
Invoke-Remediation
}
function Invoke-Monitoring {
<#
.SYNOPSIS
Controleert de huidige configuratie status
#>
[CmdletBinding()]
param()
$Monitoring = $truetry {
Connect-RequiredServices
if ($Monitoring) {
$r = Test-ComplianceWrite-Host "`n========================================" -ForegroundColor Cyan
Write-Host "$PolicyName" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Subscriptions: $($r.Total)" -ForegroundColor White
Write-Host "With Security Contacts: $($r.Configured)" -ForegroundColor $(if ($r.Configured -eq $r.Total) { 'Green' } else { 'Yellow' })
if ($r.Configured -lt $r.Total) {
Write-Host "`n⚠️ $($r.Total - $r.Configured) subscription(s) zonder security contacts" -ForegroundColor Yellow
}
}
else {
$r = Test-ComplianceWrite-Host "`nSecurity Contacts: $($r.Configured)/$($r.Total)"
}
}
catch { Write-Error$_; exit 1 }
}
function Invoke-Remediation {
<#
.SYNOPSIS
Herstelt de configuratie naar de gewenste staat
.DESCRIPTION
Dit is een monitoring-only control, remediation delegeert naar monitoring
#>
[CmdletBinding()]
param()
Write-Host "[INFO] Dit is een monitoring-only control" -ForegroundColor Yellow
Write-Host "[INFO] Running monitoring check..." -ForegroundColor Cyan
Invoke-Monitoring
}
Risico zonder implementatie
Risico zonder implementatie
High: Zonder beveiligingscontactpersonen gaan beveiligingswaarschuwingen verloren omdat er geen ontvangers zijn geconfigureerd, wordt incidentrespons uren of dagen vertraagd, worden NIS2-meldingsdeadlines van 24 en 72 uur niet gehaald, en ontstaan er compliance-hiaten voor CIS, BIO 16.01 en NIS2 Artikel 23. Het risico is bijzonder hoog voor productie-abonnementen waar vertraagde respons kan leiden tot aanzienlijke schade.
Management Samenvatting
Beveiligingscontactpersonen per abonnement bestaan uit e-mailadressen voor het beveiligingsteam via een distributielijst en de abonnementeigenaar, een optioneel telefoonnummer voor een 24/7 beveiligingsoperatiecentrum, en het inschakelen van waarschuwingen met minimaal hoge ernst. Activering gebeurt per abonnement via Microsoft Defender voor Cloud onder Beveiligingscontactpersonen. Deze functie is gratis en verplicht voor CIS, BIO 16.01 en NIS2. De implementatie neemt ongeveer 1 tot 2 uur in beslag voor alle abonnementen en zorgt voor redundantie in de aflevering van waarschuwingen.