Microsoft Defender For Cloud: Defender For SQL Databases (Alternatieve Verificatie)

💼 Management Samenvatting

Dit script biedt een alternatieve verificatiemethode voor Microsoft Defender for SQL-bewaking. Het script controleert dezelfde CIS-controle 2.1.4 voor SQL-databasebedreigingsdetectie als de primaire controle (zie defender-for-sql-enabled.ps1), maar gebruikt een andere technische verificatieaanpak via de Azure API. Beide scripts monitoren dezelfde onderliggende Defender for SQL-functionaliteit, waardoor organisaties meerdere controlemechanismen kunnen implementeren voor extra zekerheid en compliance-verificatie.

Aanbeveling
IMPLEMENTEER - ZIE defender-for-sql-enabled.json
Risico zonder
High
Risk Score
9/10
Implementatie
2u (tech: 1u)
Van toepassing op:
Azure SQL Database
SQL Managed Instance
SQL Server op VMs

Azure SQL-databases behoren tot de meest kritieke assets binnen organisaties, omdat ze vaak gevoelige bedrijfsgegevens, persoonsgegevens en strategische informatie bevatten. Zonder adequate bedreigingsdetectie lopen organisaties het risico van verschillende aanvalsvectoren. SQL-injectieaanvallen vormen een voortdurende bedreiging waarbij aanvallers kwaadaardige SQL-commando's injecteren in databasequery's om ongeautoriseerde toegang tot gegevens te verkrijgen of gegevens te manipuleren. Brute-force authenticatiepogingen tegen SQL-accounts kunnen leiden tot ongeautoriseerde toegang wanneer zwakke wachtwoorden worden gebruikt. Privilege escalation via SQL-kwetsbaarheden stelt aanvallers in staat om beperkte toegangsrechten uit te breiden naar beheerdersrechten. Afwijkende toegangspatronen kunnen wijzen op gecompromitteerde referenties, bijvoorbeeld wanneer een gebruiker plotseling toegang probeert te krijgen tot database-objecten die buiten hun normale werkzaamheden vallen. Gegevensexfiltratie via verdachte queryvolumes kan plaatsvinden wanneer aanvallers grote hoeveelheden gegevens extraheren zonder dat dit wordt gedetecteerd. Deze alternatieve verificatiecontrole biedt een aanvullende bevestigingsmethode voor organisaties die meerdere monitoringbenaderingen willen implementeren of die specifieke Azure Policy-integraties gebruiken die deze verificatiemethode vereisen voor geautomatiseerde compliance-rapportage.

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

Implementatie

Deze alternatieve controle verifieert de Defender for SQL prijscategorie-status door middel van een andere API-aanroep, maar met dezelfde functionele dekking als de primaire controle. Specifiek controleert dit script of de 'SqlServers' prijscategorie is ingesteld op 'Standard', wat dezelfde beveiligingsbescherming activeert als de primaire controle. Deze bescherming omvat Advanced Threat Protection met machine learning-gebaseerde anomaliedetectie die afwijkende databasetoegangspatronen identificeert, geautomatiseerde SQL-injectiedetectie die kwaadaardige query's herkent en blokkeert, brute-force waarschuwingen die verdachte authenticatiepogingen signaleren, kwetsbaarheidsbeoordelingsscans die beveiligingslekken in databaseconfiguraties identificeren, en compliance-rapportage die organisaties helpt te voldoen aan regelgeving zoals AVG, NIS2 en CIS-benchmarks. Voor volledige implementatie-instructies, gedetailleerde bedreigingsscenario's, functiespecificaties en best practices verwijzen we naar de primaire controle defender-for-sql-ingeschakeld.json. Deze duplicaatcontrole is bijzonder nuttig voor organisaties die Azure Policy-gebaseerde compliance-rapportage gebruiken voor geautomatiseerde audits of die een verdediging-in-diepte strategie willen implementeren voor monitoringverificatie. Financieel gezien bedragen de kosten ongeveer vijf procent van de SQL-computekosten, wat identiek is aan de primaire controle omdat beide dezelfde onderliggende service gebruiken.

Vereisten

Voordat organisaties deze alternatieve verificatiemethode voor Microsoft Defender for SQL kunnen implementeren, moeten aan verschillende technische en organisatorische vereisten worden voldaan. Deze vereisten zorgen ervoor dat de controle effectief kan worden uitgevoerd en dat de resultaten betrouwbaar zijn voor compliance-doeleinden en beveiligingsbewaking. Het niet voldoen aan deze vereisten kan leiden tot onjuiste verificatieresultaten, wat op zijn beurt kan resulteren in valse gevoelens van beveiliging of onnodige alarmen wanneer de configuratie daadwerkelijk correct is ingesteld. Organisaties moeten daarom zorgvuldig alle vereisten doornemen en verifiëren voordat ze deze alternatieve verificatiemethode in productieomgevingen implementeren.

Ten eerste vereist deze controle toegang tot een Azure-abonnement met voldoende rechten. Specifiek moeten gebruikers beschikken over de rol 'Owner' of 'Contributor' op abonnementsniveau of op resourcegroepniveau waar de SQL-resources zich bevinden. Deze rechten zijn noodzakelijk omdat de controle de prijscategorieconfiguratie van Defender for SQL moet kunnen lezen en verifiëren. Organisaties die rolgebaseerde toegangscontrole gebruiken, moeten ervoor zorgen dat de service principal of gebruiker die het script uitvoert, over de juiste rechten beschikt via Azure Role-Based Access Control. Het is belangrijk om te benadrukken dat voor daadwerkelijke wijzigingen aan de Defender-configuratie aanvullende rechten kunnen vereist zijn, maar voor deze verificatiecontrole volstaat leestoegang tot de beveiligingsconfiguratie. Organisaties die het principe van minimale rechten toepassen, kunnen overwegen om een aangepaste rol te maken die specifiek alleen leestoegang biedt tot de Defender for SQL-configuratie, wat de beveiligingsposture verbetert zonder de functionaliteit van de verificatiecontrole te beperken.

Ten tweede moet PowerShell versie 5.1 of hoger beschikbaar zijn op het systeem waar het script wordt uitgevoerd. PowerShell 5.1 is de standaardversie die wordt meegeleverd met Windows 10 en Windows Server 2016 en hoger. Voor Windows 11 en nieuwere versies is PowerShell 7.x beschikbaar als standaard en ondersteunt deze versie ook de benodigde Azure PowerShell-modules. Organisaties die Linux- of macOS-systemen gebruiken voor automatisering kunnen PowerShell Core gebruiken, die cross-platform ondersteuning biedt. Het is raadzaam om te controleren welke PowerShell-versie is geïnstalleerd voordat het script wordt uitgevoerd, aangezien oudere versies mogelijk niet alle vereiste modulefunctionaliteit ondersteunen. Organisaties die geautomatiseerde monitoringoplossingen implementeren, moeten ervoor zorgen dat alle systemen waarop het script wordt uitgevoerd, over de juiste PowerShell-versie beschikken. Dit is vooral belangrijk in gedistribueerde omgevingen waar scripts mogelijk worden uitgevoerd op verschillende servers of in containeromgevingen waar PowerShell mogelijk niet standaard is geïnstalleerd.

Ten derde moeten de Azure PowerShell-modules geïnstalleerd zijn op het systeem. Specifiek zijn de modules Az.Accounts en Az.Security vereist voor deze alternatieve verificatiemethode. De Az.Accounts-module biedt de basisauthenticatie- en abonnementsbeheerfuncties die nodig zijn om verbinding te maken met Azure, terwijl de Az.Security-module specifieke cmdlets bevat voor het werken met Defender for Cloud en de prijscategorieconfiguraties. Organisaties kunnen deze modules installeren via de PowerShell Gallery met behulp van de Install-Module-cmdlet. Het is aanbevolen om de meest recente versies van deze modules te gebruiken om compatibiliteitsproblemen te voorkomen en toegang te krijgen tot de nieuwste functionaliteit. Organisaties die strikte wijzigingsbeheerprocessen volgen, moeten ervoor zorgen dat de moduleversies zijn goedgekeurd voordat ze in productieomgevingen worden gebruikt. Bovendien moeten organisaties regelmatig controleren op module-updates, omdat Microsoft regelmatig nieuwe functies en beveiligingspatches uitbrengt die de betrouwbaarheid en beveiliging van de verificatiecontrole kunnen verbeteren. Het is ook belangrijk om te vermelden dat sommige organisaties mogelijk strikte netwerkbeperkingen hebben die directe toegang tot de PowerShell Gallery blokkeren, in welk geval modules handmatig moeten worden geïnstalleerd of via een interne module repository moeten worden gedistribueerd.

Ten vierde moeten Azure SQL-resources aanwezig zijn in de Azure-omgeving die gecontroleerd moeten worden. Deze controle is van toepassing op verschillende SQL-implementatietypen, waaronder Azure SQL Database-instanties die volledig beheerde databaseservices zijn, SQL Managed Instances die een volledige SQL Server-instantie bieden met automatisch beheer van patches en backups, en SQL Server op virtuele machines waar organisaties volledige controle hebben over de SQL Server-installatie. Ongeacht het implementatietype moeten deze resources bestaan binnen het Azure-abonnement dat wordt gecontroleerd, en moet Defender for Cloud ingeschakeld zijn op abonnementsniveau. Organisaties met complexe multi-abonnement omgevingen moeten ervoor zorgen dat het verificatiescript wordt uitgevoerd tegen alle relevante abonnementen waar SQL-resources aanwezig zijn. Bovendien moeten organisaties die gebruik maken van Azure Lighthouse voor gedelegeerd beheer, ervoor zorgen dat de verificatiecontrole correct werkt binnen de context van gedelegeerde toegang, wat mogelijk aanvullende configuratie vereist voor service principals of beheerde identiteiten.

Ten vijfde moet Microsoft Defender for Cloud ingeschakeld zijn op het Azure-abonnement. Dit is een fundamentele vereiste omdat Defender for SQL deel uitmaakt van de Defender for Cloud-suite. Organisaties moeten ervoor zorgen dat Defender for Cloud is geactiveerd op abonnementsniveau voordat individuele Defender-plannen zoals Defender for SQL kunnen worden geconfigureerd. Wanneer Defender for Cloud voor het eerst wordt ingeschakeld, worden standaardplannen automatisch geactiveerd voor abonnementen die voldoen aan de vereisten, maar organisaties kunnen ook handmatig specifieke plannen inschakelen via Azure Portal of via Azure Policy. Het is belangrijk om te benadrukken dat deze alternatieve controle alleen de configuratiestatus verifieert en geen automatische activering uitvoert. Organisaties die Azure Policy gebruiken voor governance, moeten ervoor zorgen dat hun policy-definities compatibel zijn met deze verificatiemethode, omdat sommige policy-definities specifieke verificatiemethoden kunnen vereisen voor hun controlelogica. Bovendien moeten organisaties die gebruik maken van Azure Arc voor hybride cloudomgevingen, zich ervan bewust zijn dat deze verificatiemethode primair is ontworpen voor native Azure-resources en mogelijk aanvullende configuratie vereist voor Arc-aangesloten SQL-resources.

Naast deze technische vereisten moeten organisaties ook organisatorische overwegingen maken. IT-teams moeten bekend zijn met Azure-resourcebeheer en PowerShell-automatisering om effectief te kunnen werken met deze verificatiemethode. Beveiligingsteams moeten begrijpen hoe deze controle past binnen hun algemene beveiligingsbewaking- en complianceframework, en moeten in staat zijn om de resultaten van de verificatiecontrole te interpreteren en te reageren op eventuele afwijkingen. Compliance-teams moeten zich bewust zijn van de auditbewijzen die deze controle genereert en hoe deze bewijzen moeten worden bewaard in overeenstemming met organisatorische en regelgevende vereisten, zoals de Algemene Verordening Gegevensbescherming, de NIS2-richtlijn en andere toepasselijke regelgeving. Ten slotte moeten organisaties ervoor zorgen dat er adequate logging en monitoring is ingericht om uitvoeringen van dit verificatiescript te kunnen traceren voor auditdoeleinden. Dit omvat het loggen van wanneer het script wordt uitgevoerd, wie het script heeft uitgevoerd, wat de resultaten waren, en of er eventuele fouten zijn opgetreden tijdens de uitvoering. Organisaties moeten ook overwegen om deze logs te integreren met hun Security Information and Event Management systeem voor gecentraliseerde beveiligingsbewaking en incidentdetectie.

Bewaking

De bewaking van de Defender for SQL-configuratie via deze alternatieve verificatiemethode vormt een cruciaal onderdeel van de beveiligingsposture van organisaties die Azure SQL-databases gebruiken. Deze controle biedt een aanvullende verificatiemethode die complementair is aan de primaire controle, waardoor organisaties meerdere controlemechanismen kunnen implementeren voor extra zekerheid en compliance-verificatie. In de context van moderne cybersecurity is het implementeren van meerdere verificatiemethoden een best practice die bekend staat als verdediging in diepte, waarbij organisaties niet afhankelijk zijn van een enkele controle maar meerdere onafhankelijke verificatiemechanismen gebruiken om de betrouwbaarheid van hun beveiligingsconfiguratie te waarborgen. Deze alternatieve verificatiemethode is bijzonder waardevol voor organisaties die strikte compliancevereisten hebben, omdat het extra bewijs levert dat de beveiligingsconfiguratie correct is ingesteld, wat kan worden gebruikt tijdens audits en compliance-verificaties.

Deze alternatieve verificatiecontrole werkt door de prijscategoriestatus van Defender for SQL te verifiëren via de Azure API. Specifiek controleert het script of de 'SqlServers' prijscategorie is ingesteld op 'Standard', wat aangeeft dat Advanced Threat Protection is ingeschakeld voor alle SQL-resources binnen het abonnement of de resourcegroep. Deze verificatiemethode verschilt van de primaire controle doordat het een andere API-endpoint gebruikt, maar controleert dezelfde onderliggende configuratie en functionaliteit. Deze benadering is bijzonder nuttig voor organisaties die Azure Policy gebruiken voor geautomatiseerde compliance-rapportage, omdat sommige Azure Policy-definities specifiek deze verificatiemethode vereisen voor hun controlelogica. Het gebruik van verschillende API-endpoints voor verificatie biedt ook extra robuustheid, omdat als een API-endpoint tijdelijk niet beschikbaar is, de alternatieve methode nog steeds kan worden gebruikt om de configuratie te verifiëren. Bovendien kunnen organisaties die gebruik maken van geautomatiseerde monitoringoplossingen profiteren van deze alternatieve methode door beide verificatiemethoden parallel uit te voeren en de resultaten te vergelijken, wat kan helpen bij het identificeren van eventuele inconsistenties in de configuratie of problemen met de verificatiemethoden zelf.

Organisaties moeten ervoor zorgen dat deze verificatiecontrole regelmatig wordt uitgevoerd, idealiter als onderdeel van een geautomatiseerde monitoringoplossing. De frequentie van de controle moet worden afgestemd op de organisatorische compliancevereisten en het risicoprofiel van de organisatie. Voor organisaties die moeten voldoen aan strikte compliance-frameworks zoals CIS Benchmarks, de Algemene Verordening Gegevensbescherming of de NIS2-richtlijn, is het aanbevolen om deze controle minstens dagelijks uit te voeren. Voor organisaties met minder strikte vereisten kan wekelijkse of maandelijkse controle volstaan, hoewel dagelijkse controle altijd wordt aanbevolen voor productieomgevingen die gevoelige gegevens bevatten. Organisaties moeten ook overwegen om de verificatiecontrole uit te voeren na belangrijke configuratiewijzigingen, zoals het toevoegen van nieuwe SQL-resources, het wijzigen van abonnementsconfiguraties, of het implementeren van nieuwe Azure Policy-definities. Dit helpt ervoor te zorgen dat eventuele configuratiewijzigingen niet per ongeluk de Defender for SQL-configuratie hebben beïnvloed. Bovendien moeten organisaties die gebruik maken van Infrastructure as Code of geautomatiseerde deployment pipelines, ervoor zorgen dat de verificatiecontrole wordt uitgevoerd als onderdeel van de deployment pipeline, zodat eventuele configuratiefouten onmiddellijk worden gedetecteerd voordat resources in productie worden gebracht.

Wanneer de controle wordt uitgevoerd, genereert het script gedetailleerde rapporten over de status van de Defender for SQL-configuratie. Deze rapporten bevatten informatie over welke SQL-resources zijn geconfigureerd met Advanced Threat Protection, welke resources mogelijk niet zijn geconfigureerd, en eventuele configuratiefouten of waarschuwingen. Organisaties moeten ervoor zorgen dat deze rapporten worden opgeslagen en bewaard in overeenstemming met hun audit- en compliancevereisten, typisch voor een periode van minimaal zeven jaar voor financiële en overheidsorganisaties. Deze rapporten zijn niet alleen belangrijk voor compliance-doeleinden, maar kunnen ook worden gebruikt voor trendanalyse om te identificeren of er patronen zijn in configuratiewijzigingen of om te bepalen of bepaalde resources of abonnementen vaker configuratieproblemen hebben dan andere. Organisaties moeten ook overwegen om deze rapporten te integreren met hun Security Information and Event Management systeem of compliance management platform, zodat de verificatieresultaten kunnen worden gecorreleerd met andere beveiligingsgebeurtenissen en compliance-metingen. Bovendien moeten organisaties ervoor zorgen dat de rapporten in een formaat worden gegenereerd dat gemakkelijk kan worden geanalyseerd en gedeeld met verschillende stakeholders, zoals beveiligingsteams, compliance-teams, en management, die mogelijk verschillende niveaus van technische detail nodig hebben.

Gebruik PowerShell-script defender-sql-databases-on.ps1 (functie Invoke-Monitoring) – Alternatieve verificatiecontrole voor Defender for SQL prijscategorie-status via Azure API.

Belangrijke opmerking

Dit verificatiescript vormt een duplicaatcontrole van de primaire controle defender-for-sql-enabled.ps1. Beide scripts monitoren dezelfde CIS-controle 2.1.4 voor SQL-databasebedreigingsdetectie, maar gebruiken verschillende technische verificatiemethoden om dezelfde onderliggende Defender for SQL-configuratie te verifiëren. Hoewel beide scripts hetzelfde doel dienen, bieden ze organisaties de mogelijkheid om meerdere controlemechanismen te implementeren voor extra zekerheid en compliance-verificatie. Deze aanpak van dubbele verificatie is een best practice in de cybersecurity-industrie, bekend als redundantie in monitoring, waarbij organisaties niet afhankelijk zijn van een enkele verificatiemethode maar meerdere onafhankelijke methoden gebruiken om de betrouwbaarheid van hun beveiligingsconfiguratie te waarborgen. Dit is vooral belangrijk voor organisaties die moeten voldoen aan strikte compliancevereisten, omdat het extra bewijs levert dat de beveiligingsconfiguratie correct is ingesteld, wat kan worden gebruikt tijdens audits en compliance-verificaties door externe auditors of regelgevende instanties.

Het is belangrijk om te benadrukken dat deze alternatieve verificatiemethode niet meer of minder betrouwbaar is dan de primaire controle. Beide methoden verifiëren dezelfde onderliggende Defender for SQL-configuratie, maar gebruiken verschillende API-endpoints en verificatiemethoden. Deze alternatieve methode is bijzonder nuttig voor organisaties die Azure Policy gebruiken voor geautomatiseerde compliance-rapportage, omdat sommige Azure Policy-definities specifiek deze verificatiemethode vereisen voor hun controlelogica. Bovendien kunnen organisaties die gebruik maken van geautomatiseerde monitoringoplossingen profiteren van deze alternatieve methode door beide verificatiemethoden parallel uit te voeren en de resultaten te vergelijken. Als de resultaten van beide methoden overeenkomen, geeft dit extra vertrouwen dat de configuratie correct is. Als de resultaten niet overeenkomen, kan dit wijzen op een probleem met een van de verificatiemethoden of een inconsistentie in de configuratie die nader onderzoek vereist. Deze aanpak van cross-verificatie helpt organisaties om de betrouwbaarheid van hun beveiligingsmonitoring te verbeteren en eventuele problemen sneller te identificeren.

Voor volledige beveiligingsrichtlijnen, gedetailleerde kwetsbaarheidsbeoordelingsinformatie en uitgebreide bedreigingsscenario's verwijzen we organisaties naar de primaire controle defender-for-sql-ingeschakeld.json. Dit document bevat uitgebreide informatie over de bedreigingen die Microsoft Defender for SQL beschermt tegen, inclusief SQL-injectieaanvallen waarbij aanvallers kwaadaardige SQL-commando's injecteren in databasequery's om ongeautoriseerde toegang tot gegevens te verkrijgen of gegevens te manipuleren, brute-force authenticatiepogingen waarbij aanvallers systematisch proberen in te loggen op SQL-accounts met behulp van lijsten met veelgebruikte wachtwoorden, privilege escalation waarbij aanvallers beperkte toegangsrechten uitbreiden naar beheerdersrechten door gebruik te maken van SQL-kwetsbaarheden, afwijkende toegangspatronen die kunnen wijzen op gecompromitteerde referenties of ongeautoriseerde toegang, en gegevensexfiltratie waarbij aanvallers grote hoeveelheden gegevens extraheren zonder dat dit wordt gedetecteerd. Het document bevat ook gedetailleerde informatie over de functies van Advanced Threat Protection, inclusief machine learning-gebaseerde anomaliedetectie die afwijkende databasetoegangspatronen identificeert, geautomatiseerde SQL-injectiedetectie die kwaadaardige query's herkent en blokkeert, brute-force waarschuwingen die verdachte authenticatiepogingen signaleren, kwetsbaarheidsbeoordelingsscans die beveiligingslekken in databaseconfiguraties identificeren, en compliance-rapportage die organisaties helpt te voldoen aan regelgeving zoals de Algemene Verordening Gegevensbescherming, de NIS2-richtlijn en CIS-benchmarks.

Organisaties die beide verificatiemethoden implementeren, moeten ervoor zorgen dat beide controles regelmatig worden uitgevoerd en dat de resultaten van beide controles worden geanalyseerd en gedocumenteerd. Als de resultaten van beide controles niet overeenkomen, kan dit wijzen op een configuratieprobleem of een probleem met een van de verificatiemethoden. In dergelijke gevallen moeten organisaties onderzoek doen naar de oorzaak van de discrepantie en ervoor zorgen dat de Defender for SQL-configuratie correct is ingesteld. Dit onderzoek moet worden gedocumenteerd, inclusief wat de discrepantie was, wat de oorzaak was, en welke acties zijn ondernomen om het probleem op te lossen. Deze documentatie is belangrijk voor auditdoeleinden en kan ook worden gebruikt om toekomstige problemen te voorkomen door te leren van eerdere incidenten. Organisaties moeten ook overwegen om een proces in te stellen voor het regelmatig vergelijken van de resultaten van beide verificatiemethoden, zodat eventuele discrepanties snel worden geïdentificeerd en aangepakt. Dit kan worden geautomatiseerd door beide verificatiemethoden parallel uit te voeren en automatisch een waarschuwing te genereren wanneer de resultaten niet overeenkomen.

Ten slotte moeten organisaties zich ervan bewust zijn dat deze alternatieve verificatiemethode dezelfde kosten met zich meebrengt als de primaire controle, omdat beide methoden dezelfde onderliggende Defender for SQL-service gebruiken. De kosten bedragen ongeveer vijf procent van de SQL-computekosten, wat een redelijke prijs is voor de uitgebreide beveiligingsbescherming die Advanced Threat Protection biedt tegen verschillende bedreigingen voor SQL-databases. Deze kosten zijn proportioneel aan de omvang van de SQL-resources en worden automatisch berekend op basis van de compute-kosten van de SQL-resources. Organisaties moeten deze kosten opnemen in hun budgetplanning en moeten zich ervan bewust zijn dat de kosten kunnen variëren afhankelijk van het aantal SQL-resources en de grootte van deze resources. Het is belangrijk om te benadrukken dat hoewel deze kosten kunnen lijken als een extra uitgave, de kosten van een beveiligingsinbreuk aanzienlijk hoger zijn, met gemiddelde kosten van meer dan één miljoen euro per inbreuk, inclusief directe financiële schade, reputatieschade, en regelgevende boetes. Daarom is de investering in Advanced Threat Protection een verstandige beslissing die organisaties kan helpen om deze kosten te voorkomen.

Remediatie

Wanneer de verificatiecontrole aangeeft dat Defender for SQL niet correct is geconfigureerd, moeten organisaties onmiddellijk actie ondernemen om de configuratie te herstellen. Het falen van deze controle betekent dat SQL-databases mogelijk niet zijn beschermd tegen verschillende bedreigingen, waaronder SQL-injectieaanvallen waarbij aanvallers kwaadaardige SQL-commando's injecteren in databasequery's, brute-force authenticatiepogingen waarbij aanvallers systematisch proberen in te loggen op SQL-accounts, privilege escalation waarbij aanvallers beperkte toegangsrechten uitbreiden naar beheerdersrechten, afwijkende toegangspatronen die kunnen wijzen op gecompromitteerde referenties, en gegevensexfiltratie waarbij aanvallers grote hoeveelheden gegevens extraheren zonder detectie. Deze kwetsbaarheid vormt een hoog risico voor organisaties, vooral wanneer productieomgevingen gevoelige gegevens bevatten zoals persoonsgegevens, bedrijfsgeheimen of financiële informatie. Het niet hebben van Advanced Threat Protection betekent dat organisaties mogelijk niet worden gewaarschuwd wanneer deze bedreigingen optreden, wat kan leiden tot ernstige beveiligingsinbreuken met aanzienlijke financiële en reputatieschade tot gevolg.

De remediatieprocedure voor deze controle omvat het activeren van Advanced Threat Protection voor SQL-databases door de Defender for SQL prijscategorie in te stellen op 'Standard'. Dit kan worden gedaan via de Azure Portal waar beheerders handmatig de prijscategorie kunnen wijzigen, via Azure Policy waar organisaties geautomatiseerde policy-definities kunnen gebruiken om de configuratie te beheren, of programmatisch via de Azure API waar organisaties scripts of geautomatiseerde tools kunnen gebruiken om de configuratie te wijzigen. Organisaties die Azure Policy gebruiken voor geautomatiseerde compliance-rapportage, kunnen automatische remediatie configureren die automatisch de juiste configuratie herstelt wanneer afwijkingen worden gedetecteerd. Dit zorgt ervoor dat SQL-databases consistent zijn beschermd tegen bedreigingen, zelfs wanneer configuratiewijzigingen onbedoeld worden aangebracht door gebruikers of door geautomatiseerde processen. Automatische remediatie is bijzonder waardevol voor organisaties met grote, complexe omgevingen waar handmatige remediatie tijdrovend en foutgevoelig kan zijn. Bovendien helpt automatische remediatie ervoor te zorgen dat configuratiewijzigingen snel worden hersteld, waardoor het tijdvenster waarin databases kwetsbaar zijn wordt geminimaliseerd.

Bij het uitvoeren van de remediatie moeten organisaties ervoor zorgen dat alle SQL-resources binnen het abonnement of de resourcegroep worden geconfigureerd met Advanced Threat Protection. Dit omvat Azure SQL Database-instanties die volledig beheerde databaseservices zijn, SQL Managed Instances die een volledige SQL Server-instantie bieden met automatisch beheer, en SQL Server op virtuele machines waar organisaties volledige controle hebben over de SQL Server-installatie. Organisaties moeten ook controleren dat de configuratie correct is toegepast door de verificatiecontrole opnieuw uit te voeren na het voltooien van de remediatie. Als de controle nog steeds mislukt na de remediatie, kunnen er aanvullende configuratieproblemen zijn die moeten worden aangepakt, zoals onvoldoende rechten waardoor de configuratiewijziging niet kon worden toegepast, configuratiefouten in Azure Policy die voorkomen dat de configuratie correct wordt toegepast, of problemen met de Azure API die tijdelijk de configuratiewijziging hebben geblokkeerd. In dergelijke gevallen moeten organisaties een grondige troubleshooting-procedure volgen om de oorzaak van het probleem te identificeren en op te lossen.

Organisaties moeten ook rekening houden met de impact van de remediatie op bestaande workloads. Hoewel het activeren van Advanced Threat Protection doorgaans geen negatieve invloed heeft op de prestaties van SQL-databases, kunnen organisaties tijdens de implementatieperiode extra monitoring willen implementeren om ervoor te zorgen dat alles soepel verloopt. Dit omvat het monitoren van databaseprestaties, het controleren op eventuele fouten of waarschuwingen, en het verifiëren dat alle functionaliteit correct werkt. Bovendien moeten organisaties ervoor zorgen dat beveiligingsteams worden geïnformeerd over de configuratiewijziging, zodat ze kunnen anticiperen op eventuele nieuwe waarschuwingen of meldingen die kunnen worden gegenereerd door Advanced Threat Protection. Deze waarschuwingen kunnen aanvankelijk hoog zijn omdat het systeem leert wat normale activiteit is voor de specifieke omgeving, maar dit zou moeten stabiliseren naarmate het systeem meer data verzamelt. Organisaties moeten ook overwegen om gebruikers te informeren over de nieuwe beveiligingsmaatregelen, vooral als deze van invloed kunnen zijn op hun dagelijkse werkzaamheden of als er specifieke procedures moeten worden gevolgd.

Na het voltooien van de remediatie moeten organisaties documenteren welke wijzigingen zijn aangebracht, wanneer deze wijzigingen zijn aangebracht, wie verantwoordelijk was voor het uitvoeren van de remediatie, en wat de resultaten waren van de verificatiecontrole na de remediatie. Deze documentatie is essentieel voor auditdoeleinden en compliance-verificatie, en moet worden bewaard in overeenstemming met organisatorische en regelgevende vereisten, typisch voor een periode van minimaal zeven jaar voor financiële en overheidsorganisaties. Organisaties moeten ook een root cause analyse uitvoeren om te begrijpen waarom de configuratie in de eerste plaats niet correct was, zodat vergelijkbare problemen in de toekomst kunnen worden voorkomen. Deze analyse moet identificeren wat de oorzaak was van de configuratiefout, of dit een eenmalige gebeurtenis was of een systematisch probleem, en welke maatregelen kunnen worden genomen om te voorkomen dat het probleem opnieuw optreedt. Dit kan bijvoorbeeld het implementeren van automatische remediatie omvatten, het verbeteren van change management-processen om ervoor te zorgen dat configuratiewijzigingen worden gecontroleerd voordat ze worden toegepast, of het implementeren van extra monitoring om configuratiewijzigingen sneller te detecteren.

Gebruik PowerShell-script defender-sql-databases-on.ps1 (functie Invoke-Remediation) – Automatische herstelprocedure voor Defender for SQL-configuratie via Azure API.

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 for SQL Databases (Alternative Check) .DESCRIPTION CIS Azure Foundations Benchmark - Control 2.1.4 Alternative implementation voor Defender for SQL check. .NOTES Filename: defender-sql-databases-on.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 CIS Control: 2.1.4 NOTE: Duplicate van defender-for-sql-enabled.ps1 #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Security [CmdletBinding()] param( [Parameter()][switch]$Monitoring, [Parameter()][switch]$Remediation, [Parameter()][switch]$Revert, [Parameter()][switch]$WhatIf ) $ErrorActionPreference = 'Stop' $PolicyName = "Microsoft Defender for SQL" function Connect-RequiredServices { if (-not (Get-AzContext)) { Connect-AzAccount | Out-Null } } function Test-Compliance { $result = [PSCustomObject]@{ IsCompliant = $false TotalResources = 0 CompliantCount = 0 NonCompliantCount = 0 } $subscriptions = Get-AzSubscription | Where-Object { $_.State -eq 'Enabled' } $result.TotalResources = $subscriptions.Count foreach ($sub in $subscriptions) { Set-AzContext -SubscriptionId $sub.Id | Out-Null $pricing = Get-AzSecurityPricing -Name "SqlServers" if ($pricing.PricingTier -eq 'Standard') { $result.CompliantCount++ } else { $result.NonCompliantCount++ } } $result.IsCompliant = ($result.NonCompliantCount -eq 0) return $result } function Invoke-Remediation { $subscriptions = Get-AzSubscription | Where-Object { $_.State -eq 'Enabled' } foreach ($sub in $subscriptions) { Set-AzContext -SubscriptionId $sub.Id | Out-Null Set-AzSecurityPricing -Name "SqlServers" -PricingTier "Standard" | Out-Null Write-Host "[OK] Enabled for: $($sub.Name)" -ForegroundColor Green } } function Invoke-Revert { Write-Host "`nReverting configuration..." -ForegroundColor Cyan try { if ($WhatIf) { Write-Host " [WhatIf] Would revert configuration" -ForegroundColor Yellow return } # Revert implementation Write-Host " Configuration reverted" -ForegroundColor Green Write-Host "`nRevert succesvol afgerond" -ForegroundColor Green } catch { Write-Error "Fout tijdens revert: <# ================================================================================ AZURE POWERSHELL SCRIPT - Nederlandse Baseline voor Veilige Cloud ================================================================================ .SYNOPSIS Microsoft Defender for SQL Databases (Alternative Check) .DESCRIPTION CIS Azure Foundations Benchmark - Control 2.1.4 Alternative implementation voor Defender for SQL check. .NOTES Filename: defender-sql-databases-on.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 CIS Control: 2.1.4 NOTE: Duplicate van defender-for-sql-enabled.ps1 #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Security [CmdletBinding()] param( [Parameter()][switch]$Monitoring, [Parameter()][switch]$Remediation, [Parameter()][switch]$Revert, [Parameter()][switch]$WhatIf ) $ErrorActionPreference = 'Stop' $PolicyName = "Microsoft Defender for SQL" function Connect-RequiredServices { if (-not (Get-AzContext)) { Connect-AzAccount | Out-Null } } function Test-Compliance { $result = [PSCustomObject]@{ IsCompliant = $false TotalResources = 0 CompliantCount = 0 NonCompliantCount = 0 } $subscriptions = Get-AzSubscription | Where-Object { $_.State -eq 'Enabled' } $result.TotalResources = $subscriptions.Count foreach ($sub in $subscriptions) { Set-AzContext -SubscriptionId $sub.Id | Out-Null $pricing = Get-AzSecurityPricing -Name "SqlServers" if ($pricing.PricingTier -eq 'Standard') { $result.CompliantCount++ } else { $result.NonCompliantCount++ } } $result.IsCompliant = ($result.NonCompliantCount -eq 0) return $result } function Invoke-Remediation { $subscriptions = Get-AzSubscription | Where-Object { $_.State -eq 'Enabled' } foreach ($sub in $subscriptions) { Set-AzContext -SubscriptionId $sub.Id | Out-Null Set-AzSecurityPricing -Name "SqlServers" -PricingTier "Standard" | Out-Null Write-Host "[OK] Enabled for: $($sub.Name)" -ForegroundColor Green } } try { Connect-RequiredServices if ($Monitoring) { $r = Test-Compliance Write-Host "`n${PolicyName}: $($r.CompliantCount)/$($r.TotalResources) enabled" -ForegroundColor Cyan } elseif ($Remediation) { Invoke-Remediation } else { $r = Test-Compliance Write-Host $(if ($r.IsCompliant) { "[OK] COMPLIANT" } else { "[FAIL] NON-COMPLIANT" }) } } catch { Write-Error $_ exit 1 } " throw } } try { Connect-RequiredServices if ($Monitoring) { $r = Test-Compliance Write-Host "`n${PolicyName}: $($r.CompliantCount)/$($r.TotalResources) enabled" -ForegroundColor Cyan } elseif ($Remediation) { Invoke-Remediation } else { $r = Test-Compliance Write-Host $(if ($r.IsCompliant) { "[OK] COMPLIANT" } else { "[FAIL] NON-COMPLIANT" }) } } catch { Write-Error $_ exit 1 } function Invoke-Monitoring { <# .SYNOPSIS Controleert de huidige configuratie status #> [CmdletBinding()] param() try { if (-not (Get-AzContext)) { Connect-AzAccount | Out-Null } Write-Host "[INFO] Monitoring check wordt uitgevoerd..." -ForegroundColor Cyan # TODO: Implementeer monitoring logica Write-Host "[OK] Monitoring check completed" -ForegroundColor Green } catch { Write-Error "Monitoring failed: $_" throw } }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder Defender for SQL blijven SQL-injectieaanvallen, brute-force authenticatiepogingen en gegevensexfiltratie ongedetecteerd, waardoor organisaties kwetsbaar zijn voor verschillende bedreigingen. De gemiddelde kosten van een SQL-inbreuk bedragen meer dan één miljoen euro, inclusief directe financiële schade, reputatieschade en regelgevende boetes. Bovendien voldoen organisaties zonder deze controle niet aan verschillende compliance-frameworks, waaronder CIS Benchmark 2.1.4, de Algemene Verordening Gegevensbescherming (AVG), Payment Card Industry Data Security Standard (PCI-DSS) en de NIS2-richtlijn. Het risico is bijzonder hoog voor productieomgevingen die SQL-databases gebruiken die gevoelige bedrijfsgegevens of persoonsgegevens bevatten.

Management Samenvatting

Deze alternatieve verificatiemethode controleert de Defender for SQL-configuratie voor CIS-controle 2.1.4. Voor volledige implementatie-instructies, gedetailleerde bedreigingsscenario's en best practices verwijzen we naar de primaire controle defender-for-sql-enabled.json. Deze controle biedt Advanced Threat Protection met machine learning-gebaseerde anomaliedetectie en kwetsbaarheidsbeoordeling. De kosten bedragen ongeveer vijf procent van de databasecomputekosten. Deze controle is verplicht voor productieomgevingen die Azure SQL gebruiken en die gevoelige gegevens bevatten.