Azure SQL Database: Advanced Threat Protection Inschakelen

💼 Management Samenvatting

Azure SQL Advanced Threat Protection (onderdeel van Microsoft Defender for SQL) detecteert verdachte database-activiteiten zoals SQL-injectieaanvallen, brute-forcepogingen en abnormale toegangspatronen door middel van machine learning en gedragsanalyse. Deze realtime bedreigingsdetectie is essentieel voor het identificeren van actieve aanvallen voordat significante schade optreedt.

Aanbeveling
IMPLEMENTEER VERPLICHT VOOR PRODUCTIE-DATABASES
Risico zonder
High
Risk Score
9/10
Implementatie
2u (tech: 1u)
Van toepassing op:
Azure SQL Database
SQL Managed Instance

Azure SQL-databases zonder bedreigingsdetectiecapaciteiten opereren in een beveiligingsblindheid waarbij aanvallen pas achteraf worden ontdekt, vaak nadat gegevens al zijn gestolen of gecompromitteerd. SQL-injectieaanvallen, één van de meest voorkomende en destructieve database-aanvallen, blijven volledig onopgemerkt totdat de resulterende datadiefstal wordt ontdekt via andere kanalen zoals klantenmeldingen of forensisch onderzoek. Brute-force authenticatieaanvallen waarbij aanvallers systematisch wachtwoorden proberen, kunnen succesvol zijn zonder enige snelheidsbeperking of detectiemechanismen die abnormale aantallen mislukte aanmeldpogingen identificeren. Privilege escalationpogingen waarbij aanvallers proberen om van normale gebruiker naar beheerdersrechten te komen via SQL-injectie of stored procedure-misbruik, blijven onzichtbaar zonder querypatroonanalyse. Abnormale gegevensexportvolumes waarbij insiders of gecompromitteerde accounts massale datasets exporteren, worden niet gedetecteerd zonder baselinemonitoring. Deze risico's resulteren gemiddeld in datalekken met kosten tussen €1-5 miljoen per incident volgens IBM's Cost of a Data Breach Report. Advanced Threat Protection lost deze problemen op door realtime detectie te bieden van SQL-injectiepatronen in queries via geavanceerde patroonherkenning, brute-force aanmeldpogingen door monitoring van meerdere mislukte authenticatiepogingen in korte tijd, toegang vanaf ongebruikelijke geografische locaties die niet consistent zijn met normale gebruikerspatronen, ongebruikelijke querypatronen zoals massale SELECT-statements of bulk gegevensexports, privilege escalationpogingen via stored procedures of dynamische SQL, en ongebruikelijke applicatietoegang waarbij applicaties queries uitvoeren die buiten hun normale patroon vallen. Deze detecties worden mogelijk gemaakt door machine learning-modellen die een baseline van normaal database-gedrag leren gedurende een trainingsperiode van 7-14 dagen.

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

Implementatie

Deze maatregel implementeert Advanced Threat Protection als onderdeel van Microsoft Defender for SQL (zie defender-for-sql-enabled.json voor activeringsdetails). ATP wordt automatisch geactiveerd wanneer Defender for SQL wordt ingeschakeld op abonnementsniveau en is inclusief beschikbaar zonder extra configuratie. De functionaliteit omvat realtime SQL-injectiedetectie die kwaadaardige querypatronen identificeert voordat ze worden uitgevoerd, brute-force detectie die monitort op meerdere mislukte aanmeldpogingen vanuit dezelfde bron, anomaliedetectie door machine learning die afwijkend gedrag identificeert zoals ongebruikelijke queryvolumes of data-accespatronen, geografische toegangsanomalieën waarbij aanmeldingen van ongebruikelijke locaties worden gemarkeerd, ongebruikelijke applicatietoegang waarbij applicaties buiten hun normale gedragspatroon opereren, en kwetsbaarheidsbeoordelingsscanning die automatisch databases scant op bekende kwetsbaarheden en misconfiguraties. Waarschuwingen worden gegenereerd in Microsoft Defender for Cloud met ernstbeoordelingen (Laag, Gemiddeld, Hoog, Kritiek), gedetailleerde beschrijvingen van de gedetecteerde bedreiging, en aanbevolen herstelacties. E-mailnotificaties kunnen worden geconfigureerd voor beveiligingsteams door in de SQL-serverinstellingen onder Beveiliging → Geavanceerde gegevensbeveiliging e-mailadressen toe te voegen voor waarschuwingsontvangers. De waarschuwingen bevatten forensische details zoals het bron-IP-adres, tijdstempel, querydetails en getroffen resources. Voor volwassen beveiligingsoperaties kan integratie met Microsoft Sentinel (Azure SIEM) worden geconfigureerd voor centraal waarschuwingsbeheer en geautomatiseerde responsplaybooks. De machine learning baseline vereist 7-14 dagen traintijd waarbij het systeem normaal database-gedrag leert, waarna afwijkingen kunnen worden gedetecteerd. Foutpositieve afstemming is mogelijk door bekende veilige patronen op de witte lijst te zetten. De kosten zijn inclusief in Defender for SQL-prijsstelling wat ongeveer 5% van de databasecomputekosten bedraagt, dus een database met €100/maand compute kost circa €5/maand extra voor Defender for SQL inclusief ATP.

Vereisten

Voordat Advanced Threat Protection kan worden geactiveerd voor Azure SQL-databases, moeten organisaties ervoor zorgen dat alle benodigde componenten en configuraties op hun plaats zijn. Deze vereisten vormen de fundamentele basis waarop ATP functioneert en zijn essentieel voor een effectieve bedreigingsdetectie en respons. Zonder deze basiscomponenten kan ATP niet correct functioneren en blijven kritieke beveiligingsbedreigingen mogelijk ongedetecteerd.

De primaire vereiste is dat Microsoft Defender voor SQL moet zijn ingeschakeld op abonnementsniveau. Advanced Threat Protection is geen standalone functionaliteit maar vormt een geïntegreerd onderdeel van Microsoft Defender for SQL. Dit betekent dat organisaties eerst de volledige Defender for SQL-service moeten activeren voordat ATP beschikbaar komt. De activering van Defender for SQL gebeurt via de Azure Portal onder Microsoft Defender for Cloud, waar beheerders de Defender-plannen kunnen inschakelen voor databases. Deze activering is verplicht omdat ATP gebruikmaakt van de onderliggende infrastructuur en machine learning-modellen die door Defender for SQL worden geleverd. Zonder deze activering is ATP simpelweg niet beschikbaar als optie in de configuratie-instellingen.

Een tweede kritieke vereiste is dat SQL Auditing moet zijn ingeschakeld op de betreffende SQL-databases. SQL Auditing vormt de dataverzamellaag die ATP nodig heeft om database-activiteiten te monitoren en te analyseren. Zonder auditing zijn er geen logbestanden beschikbaar die ATP kan analyseren voor het detecteren van verdachte patronen. SQL Auditing legt alle database-transacties, aanmeldpogingen, query-uitvoeringen en data-access-operaties vast in logbestanden. Deze logbestanden worden vervolgens door ATP's machine learning-algoritmen geanalyseerd om afwijkingen te identificeren. Organisaties moeten SQL Auditing configureren met een geschikt opslagaccount of Log Analytics-workspace waar de auditlogboeken kunnen worden opgeslagen. Deze opslaglocatie moet voldoen aan de beveiligings- en compliancevereisten van de organisatie, inclusief versleuteling in rust en toegangsbeperkingen.

Voor de opslag van auditlogboeken en waarschuwingen is een opslagaccount of Log Analytics-workspace vereist. Deze opslaglocatie dient meerdere doelen: ten eerste worden hier de SQL Audit-logboeken opgeslagen die ATP nodig heeft voor analyse, ten tweede worden hier de gegenereerde waarschuwingen en bedreigingsdetecties opgeslagen voor forensisch onderzoek en compliance-doeleinden. Organisaties moeten ervoor zorgen dat deze opslaglocatie voldoende capaciteit heeft voor de verwachte logvolumes, vooral voor databases met hoge transactievolumes. Daarnaast moeten beveiligingsmaatregelen zoals versleuteling, netwerkisolatie en toegangscontrole worden geïmplementeerd om te voorkomen dat gevoelige auditgegevens worden gecompromitteerd.

E-mailconfiguratie voor beveiligingswaarschuwingen is essentieel om ervoor te zorgen dat beveiligingsteams tijdig worden geïnformeerd over gedetecteerde bedreigingen. ATP genereert realtime waarschuwingen wanneer verdachte activiteiten worden gedetecteerd, maar deze waarschuwingen zijn alleen effectief als ze de juiste personen bereiken. Organisaties moeten e-mailadressen configureren van beveiligingsteamleden, security officers en databasebeheerders die deze waarschuwingen moeten ontvangen. Het wordt aanbevolen om een distributielijst te gebruiken in plaats van individuele e-mailadressen, zodat meerdere teamleden worden bereikt en er geen enkele persoon een kritieke waarschuwing mist. Daarnaast kunnen organisaties optioneel e-mailnotificaties inschakelen voor abonnementsbeheerders en eigenaren, wat vooral nuttig is voor kritieke waarschuwingen die onmiddellijke aandacht vereisen.

Ten slotte is een beveiligingsteam vereist voor waarschuwingsbeoordeling en respons. ATP genereert waarschuwingen, maar deze waarschuwingen moeten worden beoordeeld, geprioriteerd en aangepakt door getrainde beveiligingsprofessionals. Het team moet in staat zijn om onderscheid te maken tussen echte bedreigingen en foutpositieven, wat vooral belangrijk is tijdens de eerste 7-14 dagen wanneer het machine learning-model nog leert. Het team moet ook procedures hebben voor het reageren op verschillende typen bedreigingen, zoals SQL-injectieaanvallen, brute-forcepogingen of abnormale data-accespatronen. Voor grotere organisaties kan dit team bestaan uit gespecialiseerde rollen zoals security analysts, incident responders en database security specialists. Voor kleinere organisaties kan dit een combinatie zijn van IT-beheerders en security officers die zijn getraind in databasebeveiliging en bedreigingsdetectie.

Implementatie

⚠️ **BELANGRIJKE OPMERKING**: Advanced Threat Protection is NIET een standalone feature maar wordt automatisch geactiveerd wanneer Microsoft Defender for SQL wordt ingeschakeld. U kunt ATP niet apart enableren - volg eerst de instructies in defender-for-sql-enabled.json om Defender for SQL te activeren op subscription-niveau.

**FASE 1: Microsoft Defender for SQL Activeren (Vereiste voor ATP, Duur: 15 minuten)**

De eerste fase van de implementatie richt zich op het activeren van Microsoft Defender for SQL op abonnementsniveau, wat een absolute vereiste is voordat Advanced Threat Protection beschikbaar komt. ATP is geen standalone functionaliteit maar vormt een geïntegreerd onderdeel van de bredere Defender for SQL-service, wat betekent dat organisaties eerst de volledige Defender-service moeten activeren. Het activeringsproces begint met het openen van de Azure Portal en navigeren naar Microsoft Defender for Cloud, wat de centrale hub is voor alle beveiligingsconfiguraties binnen Azure. Vanuit Defender for Cloud moeten beheerders naar de Environment settings-sectie navigeren, waar alle Azure-abonnementen worden weergegeven die zijn gekoppeld aan de huidige tenant. Selecteer het specifieke abonnement waarop Advanced Threat Protection moet worden geactiveerd voor de Azure SQL-databases. Het is belangrijk om het juiste abonnement te selecteren, omdat de activering op abonnementsniveau plaatsvindt en alle databases binnen dat abonnement automatisch worden beschermd.

Binnen de Environment settings voor het geselecteerde abonnement, navigeer naar de sectie 'Defender plans' waar alle beschikbare beveiligingsplannen worden weergegeven. Zoek specifiek naar de optie 'Databases' of 'Azure SQL Databases' in de lijst van beschikbare plannen. Deze optie kan variëren afhankelijk van de Azure Portal-versie, maar is doorgaans duidelijk gelabeld als onderdeel van de database-beveiligingsservices. Zodra de juiste optie is gevonden, schakel de status over van 'Off' naar 'On' om Microsoft Defender for SQL te activeren. Deze actie activeert niet alleen Defender for SQL, maar activeert ook automatisch Advanced Threat Protection voor alle Azure SQL-databases binnen het abonnement. Het is cruciaal om te begrijpen dat deze activering op abonnementsniveau plaatsvindt, wat betekent dat alle SQL-databases binnen het abonnement automatisch worden beschermd zonder dat er individuele configuratie per database nodig is.

Na het inschakelen van de status, klik op de 'Save'-knop bovenaan de pagina om de wijzigingen op te slaan en de activering te voltooien. Zodra de wijzigingen zijn opgeslagen, wordt Microsoft Defender for SQL geactiveerd voor alle Azure SQL-databases in het abonnement, en wordt Advanced Threat Protection automatisch ingeschakeld per database zonder aanvullende configuratie. Het systeem begint onmiddellijk met het verzamelen van data voor de machine learning baseline, hoewel de volledige detectiecapaciteiten pas na 7-14 dagen volledig operationeel zijn wanneer het model voldoende normale activiteitspatronen heeft geleerd. Organisaties moeten zich bewust zijn van de kostenimplicaties: Microsoft Defender for SQL, inclusief Advanced Threat Protection, kost ongeveer 5 procent van de database compute-kosten. Voor een database met maandelijkse compute-kosten van €300, betekent dit bijvoorbeeld een extra kostenpost van circa €15 per maand voor de volledige Defender for SQL-service inclusief ATP. Voor een grotere database met €1000 per maand aan compute-kosten, zou dit oplopen tot ongeveer €50 per maand. Deze kosten zijn inclusief alle ATP-functionaliteiten zoals SQL-injectiedetectie, brute-force detectie, anomaliedetectie en kwetsbaarheidsbeoordeling.

Een kritiek belangrijk aspect om te begrijpen is dat deze activering op abonnementsniveau plaatsvindt, wat betekent dat alle SQL-databases binnen het abonnement automatisch Advanced Threat Protection krijgen. Selective enablement per database is niet mogelijk met de standaardconfiguratie - het is een alles-of-niets-benadering op abonnementsniveau. Voor organisaties die alleen specifieke databases willen beschermen, zijn er alternatieve strategieën zoals het verplaatsen van niet-beschermde databases naar een apart abonnement zonder Defender for SQL, of het accepteren van de kosten voor alle databases als onderdeel van een defense-in-depth-strategie. Deze aanpak is bewust gekozen door Microsoft om ervoor te zorgen dat organisaties een consistente beveiligingspostuur hebben voor alle databases binnen een abonnement, wat helpt bij het voorkomen van security gaps die kunnen ontstaan wanneer sommige databases wel en andere niet worden beschermd.

**FASE 2: Email Alert Notificaties Configureren (Duur: 10 minuten)**

De tweede fase van de implementatie richt zich op het configureren van e-mailwaarschuwingen zodat beveiligingsteams onmiddellijk worden geïnformeerd wanneer Advanced Threat Protection verdachte activiteiten detecteert. Deze configuratie is essentieel omdat ATP-waarschuwingen alleen effectief zijn als ze de juiste personen bereiken binnen een acceptabele tijd. Het configuratieproces begint met het openen van de Azure Portal en navigeren naar de SQL Server-resource, niet naar individuele databases, omdat de e-mailconfiguratie op server-niveau plaatsvindt en van toepassing is op alle databases die op die server worden gehost. Deze server-level configuratie zorgt voor consistentie en vereenvoudigt het beheer, vooral voor organisaties met meerdere databases op dezelfde server.

Vanuit de SQL Server-resource in de Azure Portal, navigeer naar de sectie 'Security' en vervolgens naar 'Microsoft Defender for Cloud', waar alle beveiligingsconfiguraties voor de server worden beheerd. Binnen deze sectie bevindt zich de 'Email notifications'-configuratie, waar beheerders e-mailadressen kunnen toevoegen van beveiligingsteamleden die real-time ATP-waarschuwingen moeten ontvangen. Het wordt sterk aanbevolen om een distributielijst te gebruiken in plaats van individuele e-mailadressen, zoals bijvoorbeeld security-team@company.com, omdat dit ervoor zorgt dat meerdere teamleden worden bereikt en dat er geen enkele persoon een kritieke waarschuwing mist. Distributielijsten bieden ook flexibiliteit omdat teamleden kunnen worden toegevoegd of verwijderd zonder de ATP-configuratie te wijzigen. Voor organisaties met een security operations center (SOC) is het gebruikelijk om de SOC-distributielijst te gebruiken, zodat alle analisten de waarschuwingen ontvangen en deze kunnen beoordelen volgens hun shift-schema.

Naast de primaire beveiligingsteam-e-mailadressen kunnen organisaties optioneel 'Email notification for admins and subscription owners' inschakelen, wat vooral wordt aanbevolen voor kritieke waarschuwingen die onmiddellijke aandacht vereisen. Deze optie zorgt ervoor dat abonnementsbeheerders en eigenaren ook worden geïnformeerd over hoog-ernstige bedreigingen, wat nuttig is voor escalatie en management awareness. Het is belangrijk om te overwegen dat het inschakelen van deze optie kan leiden tot een hoger e-mailvolume, vooral tijdens actieve aanvallen, dus organisaties moeten bepalen of dit past bij hun communicatie- en escalatieprocessen. Voor kleinere organisaties waar beheerders ook deel uitmaken van het beveiligingsteam, kan deze optie overbodig zijn, terwijl voor grotere organisaties met gescheiden rollen dit kan helpen bij het waarborgen van juiste escalatie.

De e-mailwaarschuwingen worden getriggerd voor verschillende typen bedreigingen die Advanced Threat Protection detecteert. SQL-injectiedetectie genereert waarschuwingen wanneer kwaadaardige querypatronen worden geïdentificeerd die wijzen op pogingen om SQL-injectieaanvallen uit te voeren. Brute-force authenticatiedetectie triggert waarschuwingen wanneer meerdere mislukte aanmeldpogingen worden gedetecteerd vanuit dezelfde bron, wat kan wijzen op geautomatiseerde aanvallen die proberen wachtwoorden te kraken. Abnormale data-accesdetectie genereert waarschuwingen wanneer ongebruikelijke patronen worden geïdentificeerd, zoals bulk gegevensexports of toegang tot gevoelige tabellen door onbevoegde gebruikers. Database vulnerability exploitation detecteert pogingen om bekende kwetsbaarheden te exploiteren, terwijl suspicious database activities een bredere categorie vormen die verschillende verdachte patronen omvat die niet in de andere categorieën passen. Elke waarschuwing bevat gedetailleerde forensische informatie zoals het bron-IP-adres, tijdstempel, specifieke query's die zijn uitgevoerd, en aanbevolen herstelacties.

De e-mailfrequentie is real-time per gedetecteerde bedreiging, wat betekent dat er onmiddellijk een e-mail wordt verzonden zodra ATP een verdachte activiteit detecteert. Tijdens actieve aanvallen kan dit leiden tot een hoog e-mailvolume, vooral wanneer aanvallers meerdere pogingen ondernemen in korte tijd. Organisaties moeten zich bewust zijn van deze mogelijkheid en overwegen om SIEM-integratie te implementeren voor geavanceerde filtering en prioritering van waarschuwingen. Microsoft Sentinel-integratie kan bijvoorbeeld worden gebruikt om waarschuwingen te analyseren, te correleren met andere beveiligingsgebeurtenissen, en alleen de meest kritieke waarschuwingen door te sturen naar beveiligingsteams, terwijl minder kritieke waarschuwingen worden opgeslagen voor latere analyse. Na het configureren van alle e-mailinstellingen, klik op de 'Save'-knop bovenaan de pagina om de wijzigingen op te slaan. Het is belangrijk om te verifiëren dat de configuratie correct is opgeslagen door terug te navigeren naar de e-mailnotificaties-sectie en te controleren dat alle geconfigureerde adressen nog steeds zichtbaar zijn.

**FASE 3: Machine Learning Baseline Period (Duur: 7-14 dagen, passief)**

Na de activering van Advanced Threat Protection start automatisch een machine learning baseline-periode waarin het systeem normale database-activiteitspatronen leert om een referentiepunt te creëren voor toekomstige anomaliedetectie. Deze baseline-periode is essentieel voor de effectiviteit van ATP omdat het systeem moet begrijpen wat normaal gedrag is voordat het afwijkingen kan identificeren. Tijdens deze periode verzamelt ATP continu data over alle database-activiteiten, inclusief aanmeldpogingen, query-uitvoeringen, data-access-operaties en applicatie-interacties. Het machine learning-model analyseert deze data om patronen te identificeren die kenmerkend zijn voor de normale werking van de database, wat vervolgens wordt gebruikt als basis voor het detecteren van afwijkingen die kunnen wijzen op beveiligingsbedreigingen.

Het baseline-leerproces omvat verschillende aspecten van database-activiteit. User login patterns worden geanalyseerd om normale aanmeldtijden te identificeren, zoals typische werkuren wanneer gebruikers zich aanmelden, gebruikelijke IP-adressen van waaruit aanmeldingen plaatsvinden, en normale frequenties van aanmeldpogingen. Query patterns worden bestudeerd om typische SELECT-, INSERT- en UPDATE-volumes te leren, evenals normale tabel-toegangspatronen die aangeven welke tabellen doorgaans worden benaderd en in welke volgorde. Data access patterns worden geanalyseerd om te begrijpen welke gebruikers normaal gesproken welke tabellen benaderen, welke kolommen worden opgevraagd, en wat normale data-exportvolumes zijn. Het model leert ook applicatiegedragspatronen, zoals welke applicaties normaal welke queries uitvoeren en wat typische query-volumes zijn per applicatie. Deze uitgebreide analyse zorgt ervoor dat het model een nauwkeurig beeld krijgt van wat normaal is voor de specifieke database-omgeving, wat essentieel is voor het verminderen van foutpositieven en het verhogen van de detectienauwkeurigheid.

Een kritiek belangrijk aspect om te begrijpen is dat tijdens de baseline-periode, die doorgaans 7-14 dagen duurt, foutpositieve waarschuwingen kunnen voorkomen omdat het machine learning-model nog leert en nog niet volledig is getraind op de normale activiteitspatronen. Organisaties moeten deze waarschuwingen beoordelen maar moeten verwachten dat er verhoogde ruis is tijdens deze periode. Het is belangrijk om deze waarschuwingen niet te negeren, omdat sommige ervan echte bedreigingen kunnen zijn, maar teams moeten zich bewust zijn dat de false positive rate hoger zal zijn dan na de baseline-periode. Beveiligingsteams moeten een proces hebben voor het beoordelen van deze waarschuwingen, waarbij ze onderscheid maken tussen echte bedreigingen die onmiddellijke aandacht vereisen en foutpositieven die het gevolg zijn van het leerproces. Het wordt aanbevolen om alle waarschuwingen te documenteren tijdens deze periode, zodat teams kunnen analyseren welke patronen hebben geleid tot foutpositieven en deze kunnen gebruiken om het model te helpen leren wat normaal is.

Na de baseline-periode wordt de anomaliedetectie aanzienlijk nauwkeuriger, waarbij abnormale activiteiten high-confidence waarschuwingen triggeren met een veel lagere false positive rate. Het model heeft op dit punt voldoende geleerd over normale activiteitspatronen en kan betrouwbaar afwijkingen identificeren die kunnen wijzen op beveiligingsbedreigingen. De waarschuwingen die na de baseline-periode worden gegenereerd, hebben doorgaans een hogere betrouwbaarheidsscore, wat betekent dat beveiligingsteams er meer vertrouwen in kunnen hebben dat deze waarschuwingen echte bedreigingen vertegenwoordigen die onmiddellijke aandacht vereisen. Het is echter belangrijk om te begrijpen dat het model continu blijft leren en zich aanpast aan veranderende patronen, dus organisaties moeten nog steeds waarschuwingen beoordelen, hoewel de nauwkeurigheid aanzienlijk is verbeterd.

Een best practice voor organisaties is om Advanced Threat Protection minimaal twee weken vóór de go-live van nieuwe databases te activeren, zodat de baseline compleet is wanneer productieverkeer begint. Deze aanpak zorgt ervoor dat het machine learning-model voldoende tijd heeft gehad om normale activiteitspatronen te leren voordat de database wordt blootgesteld aan productieverkeer, wat helpt bij het minimaliseren van foutpositieven tijdens de kritieke eerste weken na go-live. Voor bestaande databases die al in productie zijn, is het nog steeds belangrijk om de baseline-periode te respecteren en te verwachten dat er meer foutpositieven zullen zijn tijdens de eerste 7-14 dagen. Organisaties kunnen overwegen om ATP te activeren tijdens een periode met relatief lage activiteit, zoals een weekend of vakantieperiode, om de impact van foutpositieven te minimaliseren, hoewel dit niet altijd praktisch is. Het belangrijkste is dat teams zich bewust zijn van de baseline-periode en voorbereid zijn op het beoordelen van waarschuwingen tijdens deze tijd.

**FASE 4: ATP Testing via Simulated Attack (Duur: 30 minuten)**

De vierde fase van de implementatie omvat het testen van Advanced Threat Protection-functionaliteit via gesimuleerde aanvallen om te verifiëren dat het systeem correct werkt en waarschuwingen genereert wanneer verdachte activiteiten worden gedetecteerd. Deze tests zijn essentieel om te bevestigen dat ATP correct is geconfigureerd en dat beveiligingsteams waarschuwingen ontvangen wanneer bedreigingen worden gedetecteerd. Het testen moet worden uitgevoerd in een gecontroleerde omgeving, bij voorkeur op een testdatabase of een database die niet kritiek is voor productie-operaties, om te voorkomen dat normale gebruikers worden beïnvloed door de testactiviteiten.

De eerste test richt zich op het verifiëren van SQL-injectiedetectie door een gesimuleerde SQL-injectieaanval uit te voeren. Vanaf een test-applicatie of SQL Management Studio, voer een query uit die een klassiek SQL-injectiepatroon bevat, zoals SELECT * FROM Users WHERE UserId = '1' OR '1'='1'. Dit patroon is een veelvoorkomende SQL-injectietechniek waarbij een aanvaller probeert de WHERE-clause te omzeilen door een conditie toe te voegen die altijd waar is. Advanced Threat Protection moet dit patroon detecteren als een verdachte query en een waarschuwing genereren die aangeeft dat er een mogelijke SQL-injectiepoging is gedetecteerd. Het is belangrijk om te begrijpen dat deze test alleen moet worden uitgevoerd op een testdatabase of een database waarop dergelijke activiteiten zijn toegestaan, en dat organisaties moeten zorgen voor toestemming voordat ze dergelijke tests uitvoeren, zelfs in testomgevingen.

De tweede test verifieert brute-force detectie door meerdere mislukte aanmeldpogingen uit te voeren. Voer tien of meer mislukte aanmeldpogingen uit met een incorrect wachtwoord binnen een periode van vijf minuten, wat een patroon simuleert dat typisch is voor geautomatiseerde brute-force aanvallen. Advanced Threat Protection moet deze excessive failed authentication detecteren en een waarschuwing genereren die aangeeft dat er mogelijk een brute-force aanval plaatsvindt. Deze test helpt te verifiëren dat ATP niet alleen individuele mislukte aanmeldpogingen detecteert, maar ook patronen herkent die wijzen op geautomatiseerde aanvallen. Het is belangrijk om deze test uit te voeren met een testaccount dat niet wordt gebruikt voor normale operaties, om te voorkomen dat het account wordt geblokkeerd of dat normale gebruikers worden beïnvloed.

Na het uitvoeren van de gesimuleerde aanvallen, moeten organisaties de gegenereerde waarschuwingen verifiëren om te bevestigen dat ATP correct werkt. Controleer eerst de e-mailinbox voor ATP-waarschuwingen, die doorgaans binnen 1-5 minuten na de aanval zouden moeten arriveren bij de geconfigureerde e-mailadressen. Als er geen e-mails worden ontvangen, controleer dan spam-mappen, omdat beveiligingswaarschuwingen soms per ongeluk als spam worden gemarkeerd. Naast e-mailnotificaties kunnen waarschuwingen ook worden bekeken via de Azure Portal door te navigeren naar de SQL Server-resource, vervolgens naar Security, en dan naar Microsoft Defender for Cloud, waar de sectie 'View security alerts' alle ATP-detecties toont. Alternatief kunnen beheerders navigeren naar Azure Security Center en de Security alerts-blade openen, die alle ATP-detecties weergeeft samen met andere beveiligingswaarschuwingen. Deze centrale weergave is vooral nuttig voor organisaties die meerdere beveiligingsservices gebruiken en een geconsolideerd overzicht willen van alle beveiligingsgebeurtenissen.

De waarschuwingsdetails moeten uitgebreide informatie bevatten die essentieel is voor forensisch onderzoek en incident response. Elke waarschuwing moet het threat type specificeren, zoals SQL injection, brute force, abnormal data access, of andere gedetecteerde bedreigingstypen. De waarschuwing moet ook aangeven welke database of server is getroffen, zodat beveiligingsteams snel kunnen reageren op de juiste resource. Het timestamp moet nauwkeurig zijn en aangeven wanneer de verdachte activiteit is gedetecteerd, wat belangrijk is voor tijdlijnanalyse tijdens incidentonderzoek. Het bron-IP-adres moet worden opgenomen zodat teams kunnen bepalen waar de aanval vandaan komt en kunnen overwegen om dit IP-adres te blokkeren. Ten slotte moeten aanbevolen herstelacties worden opgenomen die specifiek zijn voor het type bedreiging dat is gedetecteerd, wat teams helpt bij het snel nemen van mitigatiestappen.

Indien er geen waarschuwingen worden ontvangen na het uitvoeren van de tests, moeten organisaties een systematische troubleshooting-benadering volgen. Verifieer eerst dat de e-mailconfiguratie correct is door te controleren of de geconfigureerde e-mailadressen nog steeds actief zijn en of er geen typfouten zijn gemaakt tijdens de configuratie. Controleer spam-mappen grondig, omdat beveiligingswaarschuwingen soms per ongeluk als spam worden gemarkeerd door e-mailfilters. Verifieer dat Microsoft Defender for SQL actief is door terug te navigeren naar de Environment settings in Microsoft Defender for Cloud en te controleren dat de status nog steeds 'On' is voor het abonnement. Als de baseline-periode nog niet is voltooid, wat betekent dat minder dan 7-14 dagen zijn verstreken sinds de activering, kan dit verklaren waarom er geen waarschuwingen worden gegenereerd, omdat het machine learning-model nog niet volledig is getraind. In dit geval moeten organisaties wachten tot de baseline-periode is voltooid voordat ze opnieuw testen. Als alle configuraties correct lijken te zijn en de baseline-periode is voltooid, maar er nog steeds geen waarschuwingen worden ontvangen, moet contact worden opgenomen met Microsoft Support voor verdere troubleshooting.

⏱️ **Totale Implementatietijd**: 1-2 uur (Defender for SQL enable 15 min, email config 10 min, testing 30 min). Machine learning baseline: 7-14 dagen passief.

💰 **Kosten**: ATP included in Defender for SQL pricing - ongeveer 5 procent van database compute costs (€15/maand voor €300/maand database, €50/maand voor €1000/maand database).

Monitoring

Gebruik PowerShell-script sql-advanced-threat-protection.ps1 (functie Invoke-Monitoring) – Controleren.

Effectieve monitoring van Advanced Threat Protection-waarschuwingen en bedreigingen vormt een kritieke component van een volwassen beveiligingsoperatie. Monitoring stelt organisaties in staat om gedetecteerde bedreigingen tijdig te identificeren, te beoordelen en aan te pakken voordat ze kunnen escaleren tot volledige beveiligingsincidenten. Zonder adequate monitoring blijven zelfs de meest geavanceerde detectietechnologieën ineffectief, omdat waarschuwingen onopgemerkt blijven of te laat worden aangepakt.

De primaire locatie voor het monitoren van ATP-waarschuwingen is Microsoft Defender for Cloud, waar alle beveiligingswaarschuwingen centraal worden weergegeven. Beveiligingsteams kunnen navigeren naar de Security alerts-sectie en vervolgens filteren op SQL-bedreigingen om alleen relevante database-waarschuwingen te bekijken. Deze centrale weergave biedt een overzicht van alle actieve bedreigingen, hun ernstniveaus en de status van onderzoek en herstel. Organisaties moeten dagelijks deze waarschuwingen controleren, waarbij kritieke en hoge ernstwaarschuwingen prioriteit krijgen voor onmiddellijke beoordeling.

Naast de centrale weergave in Defender for Cloud kunnen beveiligingsteams ook direct vanuit de SQL-serverconfiguratie toegang krijgen tot ATP-waarschuwingen. Door te navigeren naar de SQL-server in de Azure Portal, vervolgens naar Beveiliging en dan naar Geavanceerde gegevensbeveiliging, kunnen teams de Alerts-sectie openen die specifiek is voor die server. Deze server-specifieke weergave is vooral nuttig wanneer teams zich focussen op een specifieke database of server die mogelijk is getroffen door een bedreiging. Deze weergave toont gedetailleerde informatie over de gedetecteerde bedreiging, inclusief het type bedreiging, het tijdstip van detectie, het bron-IP-adres en de specifieke query's of activiteiten die de waarschuwing hebben getriggerd.

Wekelijkse beoordelingen vormen een essentieel onderdeel van effectieve ATP-monitoring. Tijdens deze wekelijkse reviews analyseren beveiligingsteams de patronen en trends in gedetecteerde bedreigingen, met speciale aandacht voor SQL-injectiepogingen en brute-forcepatronen. SQL-injectiepogingen kunnen wijzen op geautomatiseerde aanvallen of gerichte aanvallen tegen specifieke databases, en het identificeren van deze patronen helpt teams om proactieve maatregelen te nemen. Brute-forcepatronen, waarbij meerdere mislukte aanmeldpogingen worden gedetecteerd, kunnen wijzen op geautomatiseerde aanvallen die proberen wachtwoorden te kraken. Door deze patronen wekelijks te analyseren, kunnen teams trends identificeren, zoals toenemende aanvalsvolumes of nieuwe aanvalstechnieken, en hun verdedigingsstrategieën dienovereenkomstig aanpassen.

Kritieke en hoge ernstwaarschuwingen vereisen onmiddellijke aandacht en moeten binnen één uur worden onderzocht. Deze waarschuwingen wijzen meestal op actieve aanvallen of zeer verdachte activiteiten die een onmiddellijke respons vereisen. Organisaties moeten duidelijke procedures hebben voor het escaleren en onderzoeken van deze waarschuwingen, inclusief wie verantwoordelijk is voor het initiële onderzoek, welke stappen moeten worden ondernomen en wanneer incident response-teams moeten worden geactiveerd. Het onderzoek moet beginnen met het verzamelen van forensische details uit de waarschuwing, zoals het bron-IP-adres, het tijdstip van de activiteit, de specifieke query's die zijn uitgevoerd en welke resources zijn getroffen. Vervolgens moeten teams bepalen of dit een echte bedreiging is of een foutpositief, en indien het een echte bedreiging is, moeten onmiddellijke mitigatiestappen worden ondernomen, zoals het blokkeren van het bron-IP-adres of het tijdelijk uitschakelen van getroffen accounts.

Foutpositieve afstemming is een continu proces dat essentieel is voor het handhaven van de effectiviteit van ATP. Tijdens de eerste 7-14 dagen na activering, wanneer het machine learning-model nog leert, kunnen er meer foutpositieven optreden. Na deze periode zouden foutpositieven moeten afnemen, maar organisaties moeten nog steeds bekende veilige patronen op de witte lijst zetten om onnodige waarschuwingen te voorkomen. Dit proces vereist zorgvuldige analyse om ervoor te zorgen dat alleen daadwerkelijk veilige patronen worden gewhitelist en dat geen echte bedreigingen worden genegeerd. Organisaties moeten documenteren welke patronen zijn gewhitelist en waarom, voor audit- en compliance-doeleinden.

Ten slotte moeten beveiligingsteams bedreigingstrends volgen om proactief te kunnen reageren op veranderende aanvalspatronen. Een toenemend aanvalsvolume is een zorgwekkende trend die kan wijzen op gerichte aanvallen tegen de organisatie of op een bredere aanvalscampagne. Door deze trends te monitoren en te analyseren, kunnen teams hun verdedigingsstrategieën aanpassen, aanvullende beveiligingsmaatregelen implementeren en hun incident response-procedures verfijnen. Trendanalyse moet worden gedocumenteerd en gedeeld met relevante stakeholders, inclusief management en compliance-teams, om te zorgen voor bewustwording en ondersteuning voor aanvullende beveiligingsinvesteringen indien nodig.

Compliance en Auditing

Advanced Threat Protection voor Azure SQL-databases speelt een cruciale rol bij het voldoen aan verschillende compliance- en beveiligingsstandaarden die van toepassing zijn op Nederlandse overheidsorganisaties en bedrijven die werken met gevoelige gegevens. Deze compliancevereisten mandateren specifieke beveiligingscontroles en monitoringcapaciteiten die ATP direct ondersteunt. Organisaties die deze standaarden moeten naleven, kunnen ATP gebruiken als bewijs van hun inspanningen om bedreigingsdetectie en beveiligingsmonitoring te implementeren.

De CIS Azure Benchmark bevat specifieke aanbevelingen voor SQL-beveiliging die Advanced Threat Protection ondersteunt. Deze benchmark, ontwikkeld door het Center for Internet Security, biedt best practices voor het beveiligen van Azure-cloudomgevingen. ATP vormt een onderdeel van de Microsoft Defender for SQL-implementatie die wordt aanbevolen in de CIS Azure Benchmark voor het detecteren van bedreigingen tegen SQL-databases. Organisaties die de CIS Azure Benchmark volgen, moeten bedreigingsdetectiecapaciteiten implementeren voor hun databases, en ATP biedt deze functionaliteit als geïntegreerd onderdeel van Defender for SQL. Tijdens compliance-audits kunnen organisaties aantonen dat ze ATP hebben geactiveerd en geconfigureerd, wat voldoet aan de relevante CIS-aanbevelingen voor SQL-beveiliging.

ISO 27001:2022, de internationale standaard voor informatiebeveiligingsmanagementsystemen, bevat controle A.12.6.1 die specifiek betrekking heeft op het beheer van technische kwetsbaarheden. Deze controle vereist dat organisaties technische kwetsbaarheden tijdig identificeren, beoordelen en aanpakken. Advanced Threat Protection ondersteunt deze controle door automatisch databases te scannen op bekende kwetsbaarheden en misconfiguraties via de geïntegreerde kwetsbaarheidsbeoordelingsfunctionaliteit. Daarnaast detecteert ATP pogingen om deze kwetsbaarheden te exploiteren, zoals SQL-injectieaanvallen die proberen misbruik te maken van kwetsbaarheden in applicaties. Organisaties die ISO 27001-certificering nastreven of behouden, kunnen ATP gebruiken als bewijs dat ze voldoen aan de vereisten voor kwetsbaarheidsbeheer en bedreigingsdetectie. Tijdens ISO 27001-audits moeten organisaties kunnen aantonen dat ze bedreigingsdetectie hebben geïmplementeerd en dat ze procedures hebben voor het reageren op gedetecteerde bedreigingen.

De NIS2-richtlijn (Network and Information Systems Directive 2) is van toepassing op essentiële en belangrijke entiteiten in de Europese Unie, inclusief Nederlandse overheidsorganisaties en bedrijven in kritieke sectoren. Artikel 21 van NIS2 vereist dat organisaties detectiecapaciteiten voor beveiligingsdreigingen implementeren en procedures hebben voor het detecteren van beveiligingsincidenten. Advanced Threat Protection voldoet direct aan deze vereisten door realtime detectie te bieden van bedreigingen tegen SQL-databases, inclusief SQL-injectieaanvallen, brute-forcepogingen en abnormale toegangspatronen. Organisaties die onder NIS2 vallen, moeten kunnen aantonen dat ze adequate bedreigingsdetectie hebben geïmplementeerd, en ATP biedt deze capaciteit voor database-workloads. Daarnaast vereist NIS2 dat organisaties incidenten rapporteren aan de relevante autoriteiten, en ATP-waarschuwingen kunnen worden gebruikt als input voor deze rapportage. Nederlandse organisaties die onder NIS2 vallen, moeten ervoor zorgen dat hun ATP-implementatie voldoet aan de vereisten van Artikel 21 en dat ze procedures hebben voor het escaleren van ATP-waarschuwingen naar incident response-processen.

De Algemene Verordening Gegevensbescherming (AVG), ook bekend als GDPR, bevat Artikel 32 dat vereist dat organisaties passende technische en organisatorische maatregelen implementeren om persoonsgegevens te beveiligen. Deze maatregelen moeten onder meer beveiligingsmonitoring omvatten om ongeautoriseerde toegang, verlies of vernietiging van persoonsgegevens te detecteren. Advanced Threat Protection ondersteunt deze vereisten door te monitoren op verdachte activiteiten die kunnen wijzen op ongeautoriseerde toegang tot databases die persoonsgegevens bevatten. ATP detecteert bijvoorbeeld abnormale data-accespatronen, bulk gegevensexports en toegang vanaf ongebruikelijke locaties, wat allemaal kan wijzen op pogingen om persoonsgegevens te stelen of te compromitteren. Organisaties die persoonsgegevens verwerken moeten kunnen aantonen dat ze adequate beveiligingsmonitoring hebben geïmplementeerd, en ATP biedt deze capaciteit voor Azure SQL-databases. In het geval van een datalek moeten organisaties dit binnen 72 uur melden aan de Autoriteit Persoonsgegevens, en ATP-waarschuwingen kunnen helpen bij het identificeren en rapporteren van dergelijke incidenten.

PCI-DSS v4.0 (Payment Card Industry Data Security Standard) is van toepassing op organisaties die creditcardgegevens verwerken, opslaan of verzenden. Requirement 11.4 vereist dat organisaties intrusion detection-systemen implementeren om ongeautoriseerde toegang tot systemen te detecteren. Advanced Threat Protection voldoet aan deze vereiste door te detecteren op verdachte database-activiteiten die kunnen wijzen op ongeautoriseerde toegang of pogingen tot datadiefstal. Voor organisaties die creditcardgegevens opslaan in Azure SQL-databases, is ATP een essentieel onderdeel van hun PCI-DSS-compliance. Tijdens PCI-DSS-audits moeten organisaties kunnen aantonen dat ze intrusion detection hebben geïmplementeerd en dat ze procedures hebben voor het reageren op gedetecteerde bedreigingen. ATP-waarschuwingen moeten worden beoordeeld en aangepakt volgens de incident response-procedures van de organisatie, en alle activiteiten moeten worden gedocumenteerd voor audit-doeleinden. Organisaties moeten er ook voor zorgen dat ATP correct is geconfigureerd en dat waarschuwingen worden beoordeeld door getrainde beveiligingspersoneel.

Voor alle deze compliance-standaarden is het essentieel dat organisaties niet alleen ATP implementeren, maar ook kunnen aantonen dat het correct is geconfigureerd en dat waarschuwingen worden beoordeeld en aangepakt. Dit betekent dat organisaties documentatie moeten bijhouden van hun ATP-configuratie, procedures moeten hebben voor het beoordelen en escaleren van waarschuwingen, en auditlogs moeten behouden van alle ATP-activiteiten. Tijdens compliance-audits moeten organisaties kunnen demonstreren dat ATP actief is, dat waarschuwingen worden beoordeeld, en dat er procedures zijn voor het reageren op gedetecteerde bedreigingen. Deze documentatie en procedures vormen het bewijs dat organisaties voldoen aan de relevante compliancevereisten en dat ze proactief werken aan het beschermen van hun databases tegen beveiligingsbedreigingen.

Remediatie

Gebruik PowerShell-script sql-advanced-threat-protection.ps1 (functie Invoke-Remediation) – Automatiseert de implementatie van Advanced Threat Protection voor Azure SQL-databases.

Remediatie van Advanced Threat Protection voor Azure SQL-databases omvat het activeren van ATP voor databases die momenteel niet zijn beschermd, of het corrigeren van configuratiefouten in bestaande ATP-implementaties. Het is belangrijk om te begrijpen dat ATP automatisch wordt geactiveerd wanneer Microsoft Defender for SQL wordt ingeschakeld op abonnementsniveau, wat betekent dat remediatie primair bestaat uit het activeren van Defender for SQL indien dit nog niet is gebeurd, of het corrigeren van configuratieproblemen zoals ontbrekende e-mailnotificaties of onjuiste waarschuwingsinstellingen.

Voor databases die momenteel geen Advanced Threat Protection hebben, begint het remediatieproces met het verifiëren van de status van Microsoft Defender for SQL op abonnementsniveau. Navigeer naar Microsoft Defender for Cloud in de Azure Portal en controleer de Environment settings voor het relevante abonnement. Als Defender for SQL niet is ingeschakeld, activeer deze service door de status te wijzigen van 'Off' naar 'On' onder de 'Defender plans'-sectie. Zodra Defender for SQL is geactiveerd, wordt ATP automatisch ingeschakeld voor alle Azure SQL-databases binnen het abonnement zonder aanvullende configuratie. Het is belangrijk om te begrijpen dat deze activering op abonnementsniveau plaatsvindt, wat betekent dat alle databases binnen het abonnement worden beschermd, niet alleen specifieke databases. Voor organisaties die alleen bepaalde databases willen beschermen, moeten ze overwegen om niet-beschermde databases te verplaatsen naar een apart abonnement zonder Defender for SQL, of accepteren dat alle databases worden beschermd als onderdeel van een defense-in-depth-strategie.

Na het activeren van Defender for SQL en ATP, moeten organisaties ervoor zorgen dat alle benodigde configuraties correct zijn ingesteld. Controleer of SQL Auditing is ingeschakeld op de betreffende databases, omdat ATP afhankelijk is van auditlogboeken voor het detecteren van verdachte activiteiten. Zonder SQL Auditing kunnen er geen logbestanden worden geanalyseerd, wat betekent dat ATP niet effectief kan functioneren. Configureer SQL Auditing met een geschikt opslagaccount of Log Analytics-workspace waar de auditlogboeken kunnen worden opgeslagen. Deze opslaglocatie moet voldoen aan de beveiligings- en compliancevereisten van de organisatie, inclusief versleuteling in rust en toegangsbeperkingen. Verifieer dat de opslaglocatie voldoende capaciteit heeft voor de verwachte logvolumes, vooral voor databases met hoge transactievolumes.

Configureer e-mailnotificaties voor ATP-waarschuwingen door te navigeren naar de SQL Server-resource in de Azure Portal, vervolgens naar Security en Microsoft Defender for Cloud. Voeg e-mailadressen toe van beveiligingsteamleden die real-time ATP-waarschuwingen moeten ontvangen, bij voorkeur via een distributielijst in plaats van individuele e-mailadressen. Schakel optioneel 'Email notification for admins and subscription owners' in voor kritieke waarschuwingen. Verifieer dat de e-mailconfiguratie correct is opgeslagen en test de configuratie door een gesimuleerde aanval uit te voeren en te controleren of waarschuwingen worden ontvangen. Als er geen waarschuwingen worden ontvangen, controleer spam-mappen, verifieer dat de e-mailadressen correct zijn geconfigureerd, en controleer of Defender for SQL actief is.

Voor bestaande ATP-implementaties die configuratiefouten hebben, moeten organisaties de specifieke problemen identificeren en corrigeren. Als e-mailnotificaties niet werken, controleer de e-mailconfiguratie en verifieer dat de geconfigureerde adressen nog steeds actief zijn. Als ATP geen waarschuwingen genereert, verifieer dat SQL Auditing is ingeschakeld en dat de auditlogboeken correct worden opgeslagen. Controleer of de baseline-periode is voltooid, omdat ATP tijdens de eerste 7-14 dagen mogelijk minder waarschuwingen genereert terwijl het machine learning-model nog leert. Als er te veel foutpositieven zijn, overweeg om bekende veilige patronen op de witte lijst te zetten, hoewel dit zorgvuldig moet worden gedaan om ervoor te zorgen dat geen echte bedreigingen worden genegeerd.

Na het voltooien van de remediatie, moeten organisaties het ATP-systeem testen om te verifiëren dat alles correct werkt. Voer gesimuleerde aanvallen uit, zoals SQL-injectiepogingen of brute-force aanmeldpogingen, en verifieer dat waarschuwingen worden gegenereerd en ontvangen. Documenteer alle configuratiewijzigingen en testresultaten voor auditdoeleinden. Zorg ervoor dat beveiligingsteams zijn getraind in het beoordelen en reageren op ATP-waarschuwingen, en dat er procedures zijn voor het escaleren van kritieke waarschuwingen naar incident response-teams. Plan regelmatige reviews van ATP-configuraties en waarschuwingspatronen om ervoor te zorgen dat het systeem optimaal functioneert en dat configuratiewijzigingen correct blijven na updates of wijzigingen in de database-omgeving.

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 Azure SQL: Advanced Threat Protection Enabled .DESCRIPTION CIS Azure Foundations Benchmark - Control 4.1.2 Controleert of Advanced Threat Protection (ATP) is ingeschakeld voor Azure SQL servers. ATP detecteert afwijkende activiteiten die duiden op security threats. Waarom is deze control belangrijk? - Real-time threat detection - Security alerts voor verdachte activiteiten - Integration met Azure Security Center - Automated threat analysis .NOTES Filename: sql-advanced-threat-protection.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Related JSON: content/azure/databases/sql-advanced-threat-protection.json CIS Control: 4.1.2 #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Sql [CmdletBinding()] param( [Parameter()][switch]$WhatIf, [Parameter()][switch]$Monitoring, [Parameter()][switch]$Remediation, [Parameter()][switch]$Revert ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' $PolicyName = "Azure SQL: Advanced Threat Protection" function Connect-RequiredServices { function Invoke-Revert { Write-Host "`n⚠️ ATP uitschakelen wordt niet aanbevolen" -ForegroundColor Yellow } try { if (-not (Get-AzContext)) { Connect-AzAccount | Out-Null } } catch { throw } } function Test-Compliance { Write-Verbose "Testing compliance for: $PolicyName..." $result = [PSCustomObject]@{ ScriptName = "sql-advanced-threat-protection" PolicyName = $PolicyName IsCompliant = $false TotalResources = 0 CompliantCount = 0 NonCompliantCount = 0 Details = @() Recommendations = @() } function Invoke-Revert { Write-Host "`n⚠️ ATP uitschakelen wordt niet aanbevolen" -ForegroundColor Yellow } try { $sqlServers = Get-AzSqlServer -ErrorAction SilentlyContinue if (-not $sqlServers) { $result.Details += "Geen SQL servers gevonden" $result.IsCompliant = $true return $result } $result.TotalResources = @($sqlServers).Count foreach ($server in $sqlServers) { $atp = Get-AzSqlServerAdvancedThreatProtectionSetting ` -ResourceGroupName $server.ResourceGroupName ` -ServerName $server.ServerName ` -ErrorAction SilentlyContinue if ($atp -and $atp.IsEnabled) { $result.CompliantCount++ $result.Details += "✓ Server '$($server.ServerName)' heeft ATP enabled" } else { $result.NonCompliantCount++ $result.Details += "✗ Server '$($server.ServerName)' heeft ATP DISABLED" $result.Recommendations += "Enable ATP voor '$($server.ServerName)'" } } $result.IsCompliant = ($result.NonCompliantCount -eq 0) } catch { $result.Details += "ERROR: $($_.Exception.Message)" } return $result } function Invoke-Remediation { Write-Host "`nStarting remediation for: $PolicyName..." -ForegroundColor Cyan function Invoke-Revert { Write-Host "`n⚠️ ATP uitschakelen wordt niet aanbevolen" -ForegroundColor Yellow } try { $fixed = 0 $sqlServers = Get-AzSqlServer -ErrorAction SilentlyContinue foreach ($server in $sqlServers) { $atp = Get-AzSqlServerAdvancedThreatProtectionSetting ` -ResourceGroupName $server.ResourceGroupName ` -ServerName $server.ServerName ` -ErrorAction SilentlyContinue if (-not $atp.IsEnabled) { Enable-AzSqlServerAdvancedThreatProtection ` -ResourceGroupName $server.ResourceGroupName ` -ServerName $server.ServerName ` -ErrorAction Stop | Out-Null Write-Host " [OK] Enabled ATP for $($server.ServerName)" -ForegroundColor Green $fixed++ } } Write-Host "`n[OK] Configured: $fixed server(s)" -ForegroundColor Green } catch { Write-Error "Remediation failed: $_" } } function Invoke-Monitoring { $result = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "SQL servers: $($result.TotalResources)" -ForegroundColor White Write-Host "Compliant: $($result.CompliantCount)" -ForegroundColor Green Write-Host "Non-compliant: $($result.NonCompliantCount)" -ForegroundColor $(if ($result.NonCompliantCount -gt 0) { 'Red' } else { 'Green' }) if ($result.Details) { Write-Host "`nDetails:" -ForegroundColor Yellow $result.Details | ForEach-Object { Write-Host " $_" -ForegroundColor Gray } } return $result } function Invoke-Revert { Write-Host "`n⚠️ ATP uitschakelen wordt niet aanbevolen" -ForegroundColor Yellow } try { Connect-RequiredServices if ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { if ($WhatIf) { Write-Host "`n=== WHATIF MODE ===" -ForegroundColor Yellow $result = Test-Compliance Write-Host "Zou ATP enablen voor $($result.NonCompliantCount) server(s)" -ForegroundColor Yellow } else { Invoke-Remediation } } elseif ($Revert) { Invoke-Revert } else { $result = Test-Compliance Write-Host "`nCompliance Check: $PolicyName" -ForegroundColor Cyan if ($result.IsCompliant) { Write-Host "Status: [OK] COMPLIANT" -ForegroundColor Green } else { Write-Host "Status: [FAIL] NON-COMPLIANT ($($result.NonCompliantCount) servers)" -ForegroundColor Red } } } catch { Write-Error $_ exit 1 }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder Advanced Threat Protection voor Azure SQL Database blijven kritieke security-aanvallen ongedetecteerd tot datalekken worden ontdekt wat betekent dat incident response veel te laat komt. SQL injection-aanvallen waarbij aanvallers malicious SQL-code injecteren via applicatie-inputs blijven maandenlang onopgemerkt terwijl aanvallers systematisch gevoelige data exfiltreren, database-schema's dumpen, of administrative privileges escaleren - gemiddelde detectietijd zonder ATP is 197 dagen volgens IBM Cyber Security Intelligence Index wat catastrofale data exposure betekent. Brute force authentication-aanvallen waarbij aanvallers duizenden wachtwoord-combinaties proberen om SQL-accounts te compromitteren slagen zonder real-time alerts die security teams kunnen triggeren voor immediate blocking, wat betekent dat gecompromitteerde accounts weken onopgemerkt blijven en aanvallers vrije toegang hebben tot alle database-data. Insider threats waarbij malicious of gecompromitteerde employees abnormale data-access patterns vertonen (bulk downloads, toegang tot ongeautoriseerde tabellen, queries buiten kantooruren) blijven volledig ongedetecteerd zonder behavioral analytics. Data exfiltration via authorized maar abnormale queries wordt niet herkend waarbij insiders systematisch confidential data kunnen exporteren zonder detection. Vulnerability exploitation zoals SQL injection, command injection of authentication bypasses worden niet geïdentificeerd wat betekent dat zero-day exploits of misconfigurations maandenlang kunnen worden misbruikt. Compliance-auditors vereisen intrusion detection capabilities onder ISO 27001 A.12.6.1, NIS2 Artikel 21 security monitoring, PCI-DSS Requirement 10/11 die continuous monitoring mandateren - zonder ATP falen deze audits. Gemiddelde kosten per SQL injection data breach zijn €1-5 miljoen volgens Verizon DBIR waarbij early detection via ATP gemiddeld 80 procent cost reduction oplevert. Het risico is kritiek voor alle productie-databases met gevoelige data, hoog voor transactional databases, en mandatory voor compliance-workloads.

Management Samenvatting

Advanced Threat Protection (ATP) voor Azure SQL Database is een intelligent security layer die machine learning en behavioral analytics gebruikt om sophisticated database-aanvallen te detecteren en real-time alerts te genereren. ATP detecteert: SQL injection-pogingen door abnormale query patterns te herkennen (UNION attacks, stored procedure abuse, blind SQL injection), brute force authentication waarbij excessive failed login attempts automatisch worden gedetecteerd en geblokkeerd, abnormale data access patterns zoals bulk data exports, toegang tot gevoelige tabellen door unauthorized users, queries vanaf ongebruikelijke locaties of IP-adressen, database vulnerability exploitation via suspicious stored procedures, command injection, authentication bypasses, insider threats door behavioral analytics die afwijkingen van normale user activity detecteren. ATP is onderdeel van Microsoft Defender for SQL en wordt automatisch geactiveerd wanneer Defender for SQL wordt ingeschakeld op subscription-level. Machine learning baseline period: 7-14 dagen waarbij ATP normal database activity leert voordat anomaly detection fully operational is. Real-time alerts via: email notifications naar security teams, Azure Security Center recommendations, integration met Azure Sentinel SIEM voor centralized security monitoring, Azure Monitor action groups voor automated response (bijvoorbeeld automatic IP blocking via Azure Automation). Deze maatregel is verplicht voor ALLE productie Azure SQL Databases met gevoelige data, mandatory voor compliance met ISO 27001 A.12.6.1, NIS2 Artikel 21, PCI-DSS Requirements 10/11, en considered critical security control door NIST CSF (Detect function). Implementatie: ATP wordt automatisch enabled bij Defender for SQL activering (zie defender-for-sql-enabled.json), configureer email alert recipients, wacht 7-14 dagen voor ML baseline, test via simulated SQL injection. Kosten: included in Defender for SQL pricing (ongeveer 5 procent van database compute costs, bijvoorbeeld €15/maand voor €300/maand database). Return on investment komt van: 80 procent reductie in breach detection time (van maanden naar minuten), prevented data exfiltration via early detection, compliance audit success, en gemiddeld €1-5M cost avoidance per prevented SQL injection breach.