Azure Monitor: Alert Bij SQL Database Firewall Deletion

💼 Management Samenvatting

Een waarschuwingsregel moet worden geconfigureerd die waarschuwt wanneer SQL Database firewallregels worden verwijderd. Het verwijderen van firewallregels kan databasetoegang onbedoeld openen naar het publieke internet of kritieke toegang blokkeren, wat een beveiligingsincident of operationele uitval kan veroorzaken.

Aanbeveling
IMPLEMENTEER WAARSCHUWINGEN VOOR SQL FIREWALL VERWIJDERINGEN
Risico zonder
Critical
Risk Score
9/10
Implementatie
0.5u (tech: 0.5u)
Van toepassing op:
Azure

SQL Database firewallregels bepalen welke IP-adressen toegang hebben tot de database. Het verwijderen van deze regels kan catastrofale gevolgen hebben voor de beveiligingspostuur van de organisatie. Wanneer alle firewallregels per ongeluk worden verwijderd, ontstaat direct publieke internettoegang tot de database, wat een enorme beveiligingsrisico vormt. Malafide verwijdering door gecompromitteerde beheerdersaccounts opent de database voor aanvallers zonder enige beperking. Bovendien kan het verwijderen van vereiste whitelist IP-adressen legitieme applicatietoegang blokkeren, wat tot uitval en productieproblemen leidt. Zonder een waarschuwing blijft het verwijderen van firewallregels onopgemerkt totdat beveiligingsscans publieke blootstelling detecteren of applicaties falen door geblokkeerde toegang. Door die tijd kan de schade al aanzienlijk zijn: gevoelige gegevens kunnen gelekt zijn, systemen kunnen gecompromitteerd zijn, of bedrijfskritieke applicaties kunnen volledig offline zijn. Een waarschuwing bij verwijdering biedt directe melding aan beveiligingsteams voor snelle onderzoek: was het opzettelijk onderhoud of per ongeluk of kwaadwillig? Met directe kennisgeving kan onmiddellijke herstelactie plaatsvinden door firewallregels te herstellen, en wordt het beveiligingsblootstellingsvenster geminimaliseerd tot de kortst mogelijke tijd.

PowerShell Modules Vereist
Primary API: Azure API
Connection: Connect-AzAccount
Required Modules: Az.Monitor

Implementatie

Deze maatregel implementeert een Activity Log waarschuwingsregel die geactiveerd wordt bij Azure SQL Database firewallregel verwijderingen. De waarschuwingsconfiguratie gebruikt de Activity Log bewerking 'Microsoft.Sql/servers/firewallRules/delete' als voorwaarde en stuurt meldingen naar een Actiegroep voor e-mail- of SMS-notificatie aan het beveiligingsteam. De implementatie kost 30 minuten en is kosteloos. Dit is een kritieke waarschuwing voor SQL Database beveiliging en voldoet aan CIS Azure Benchmark controle 5.2.11 Level 1 en BIO 12.04.

Vereisten

Implementatie

Gebruik PowerShell-script alert-sql-firewall-delete.ps1 (functie Invoke-Implementation) – Implementeren.

Compliance en Auditing

Monitoring

Gebruik PowerShell-script alert-sql-firewall-delete.ps1 (functie Invoke-Monitoring) – Controleren.

Remediatie

Gebruik PowerShell-script alert-sql-firewall-delete.ps1 (functie Invoke-Remediation) – Herstellen.

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 Alert SQL Firewall Delete .DESCRIPTION CIS Azure Foundations Benchmark - Control 5.13 Controleert alert voor SQL firewall rule delete events. .NOTES Filename: alert-sql-firewall-delete.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 CIS Control: 5.13 #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Monitor [CmdletBinding()] param([Parameter()][switch]$Monitoring) $ErrorActionPreference = 'Stop' $PolicyName = "Alert SQL Firewall Delete" function Connect-RequiredServices { if (-not (Get-AzContext)) { Connect-AzAccount | Out-Null } } function Test-Compliance { $alerts = Get-AzActivityLogAlert -ErrorAction SilentlyContinue $result = @{ TotalAlerts = $alerts.Count; SQLFirewallDeleteAlerts = 0 } foreach ($alert in $alerts) { $sqlCondition = $alert.Condition.AllOf | Where-Object { $_.Field -eq 'resourceType' -and $_.Equals -like '*Microsoft.Sql/servers/firewallRules*' } $deleteCondition = $alert.Condition.AllOf | Where-Object { $_.Field -eq 'operationName' -and $_.Equals -like '*delete*' } if ($sqlCondition -and $deleteCondition) { $result.SQLFirewallDeleteAlerts++ } } return $result } try { Connect-RequiredServices if ($Monitoring) { $r = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "Total Activity Log Alerts: $($r.TotalAlerts)" -ForegroundColor White Write-Host "SQL Firewall Delete Alerts: $($r.SQLFirewallDeleteAlerts)" -ForegroundColor $(if ($r.SQLFirewallDeleteAlerts -gt 0) { 'Green' } else { 'Yellow' }) if ($r.SQLFirewallDeleteAlerts -eq 0) { Write-Host "`n⚠️ Configureer alert voor SQL firewall verwijderingen" -ForegroundColor Yellow } } else { $r = Test-Compliance Write-Host "`nSQL Firewall Delete Alerts: $($r.SQLFirewallDeleteAlerts) configured" } } 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 = $true try { Connect-RequiredServices if ($Monitoring) { $r = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "Total Activity Log Alerts: $($r.TotalAlerts)" -ForegroundColor White Write-Host "SQL Firewall Delete Alerts: $($r.SQLFirewallDeleteAlerts)" -ForegroundColor $(if ($r.SQLFirewallDeleteAlerts -gt 0) { 'Green' } else { 'Yellow' }) if ($r.SQLFirewallDeleteAlerts -eq 0) { Write-Host "`n⚠️ Configureer alert voor SQL firewall verwijderingen" -ForegroundColor Yellow } } else { $r = Test-Compliance Write-Host "`nSQL Firewall Delete Alerts: $($r.SQLFirewallDeleteAlerts) configured" } } 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
Critical: Het verwijderen van SQL firewallregels resulteert in database blootstelling aan het internet. Wanneer een aanvaller of per ongeluk de firewall wordt verwijderd, ontstaat onbeperkte toegang. Compliance: CIS 5.2.11, BIO 12.04. Het risico is KRITIEK - verwijdering van databasebeveiliging.

Management Samenvatting

Waarschuwing SQL Firewall Verwijdering: Bewaak SQL Server firewallregel verwijderingen. Directe waarschuwing bij verwijdering van beveiliging. Activering: Monitor → Activity Log waarschuwing → SQL firewall verwijdering. Gratis. Verplicht CIS 5.2.11, BIO 12.04. Implementatie: 30 minuten. KRITIEKE databasebeveiligingswaarschuwing.