Defender For Containers Inschakelen Voor Azure Kubernetes Service-clusters

💼 Management Samenvatting

Defender for Containers biedt uitgebreide beveiliging voor Azure Kubernetes Service (AKS)-clusters door runtime-detectie van bedreigingen, kwetsbaarheidsscanning van container images en handhaving van Kubernetes-beveiligingsbeleid. Voor Nederlandse overheidsorganisaties is dit essentieel om container workloads te beveiligen en te voldoen aan BIO-, ISO 27001- en NIS2-vereisten.

Aanbeveling
IMPLEMENTEER DEFENDER FOR CONTAINERS VOOR ALLE AKS-CLUSTERS
Risico zonder
High
Risk Score
9/10
Implementatie
100u (tech: 60u)
Van toepassing op:
Azure Kubernetes Service (AKS)
Azure Container Registry (ACR)
Azure Defender for Cloud

Azure Kubernetes Service-clusters vormen een kritiek onderdeel van moderne cloud-infrastructuur, maar introduceren unieke beveiligingsuitdagingen die traditionele VM-beveiligingstools niet adequaat kunnen adresseren. Containers delen de kernel van de host, waardoor privilege escalation-aanvallen mogelijk zijn wanneer containers onjuist zijn geconfigureerd. Snelle deploymentcycli betekenen dat kwetsbare container images binnen minuten in productie kunnen staan, zonder dat er tijd is voor handmatige beveiligingsreviews. Complexe netwerkconfiguraties tussen containers maken het lastig om verdachte communicatie te detecteren, en Kubernetes RBAC-misconfiguraties kunnen leiden tot onbevoegde toegang tot clusterresources. Zonder gespecialiseerde containerbeveiliging blijven deze risico's onopgemerkt totdat een incident plaatsvindt, wat kan leiden tot datalekken, serviceonderbrekingen of compromittatie van kritieke workloads.

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

Implementatie

Dit artikel beschrijft hoe u Defender for Containers inschakelt en configureert voor specifieke AKS-clusters, hoe u de verschillende beveiligingscomponenten integreert in uw containerworkloads en hoe u de beveiligingsstatus continu monitort. U leert over de architectuur van Defender for Containers binnen AKS, inclusief de agents die worden geïmplementeerd, de integratie met Azure Container Registry voor image-scanning en de runtime-detectiecapaciteiten. Daarnaast behandelen we hoe u beleid configureert voor automatische scanning, hoe u waarschuwingen interpreteert en prioriteert, en hoe u remediatiestappen onderneemt wanneer bedreigingen worden gedetecteerd. De focus ligt op praktische implementatie binnen de Nederlandse publieke sector, met aandacht voor compliance-vereisten en governance-processen.

Architectuur en componenten van Defender for Containers in AKS

Defender for Containers integreert diep in de AKS-clusterarchitectuur door middel van meerdere geavanceerde componenten die samenwerken om een complete beveiligingslaag te vormen. De primaire componenten zijn de Defender extensie voor AKS, de Defender agent voor Kubernetes en de integratie met Azure Container Registry voor image-scanning. De Defender extensie voor AKS wordt geïnstalleerd als een cluster-add-on en beheert de lifecycle van beveiligingsagents binnen het cluster. Deze extensie zorgt ervoor dat agents automatisch worden bijgewerkt, dat nieuwe nodes automatisch worden beveiligd wanneer ze worden toegevoegd aan het cluster, en dat configuraties consistent worden toegepast over alle workloads. De extensie communiceert met Azure Defender for Cloud om beveiligingsgebeurtenissen en scanresultaten te rapporteren, waardoor een gecentraliseerd overzicht ontstaat van de beveiligingsstatus van alle AKS-clusters binnen de tenant.

De Defender agent voor Kubernetes is een daemonset die op elke node in het cluster draait en verantwoordelijk is voor runtime-detectie van bedreigingen. Deze agent monitort continu containerprocessen, netwerkverbindingen, bestandssysteemactiviteiten en systeemaanroepen om verdacht gedrag te identificeren. De agent gebruikt machine learning-modellen en gedragsanalyses om afwijkingen te detecteren die kunnen wijzen op aanvallen zoals cryptomining, privilege escalation, container breakout of ongeautoriseerde toegang. Wanneer verdachte activiteiten worden gedetecteerd, genereert de agent waarschuwingen die worden doorgestuurd naar Defender for Cloud, waar ze worden geaggregeerd, geprioriteerd en gepresenteerd in het security dashboard. De agent werkt met minimale impact op clusterperformance door gebruik te maken van eBPF-technologie voor efficiënte kernel-level monitoring zonder overhead van traditionele log-agents.

Azure Container Registry-integratie maakt automatische kwetsbaarheidsscanning mogelijk van alle container images die worden opgeslagen of gebruikt in AKS-clusters. Wanneer images worden gepusht naar een ACR-registry of wanneer een cluster een image probeert te pullen, wordt automatisch een scan uitgevoerd op bekende kwetsbaarheden (CVEs). De scanresultaten worden gekoppeld aan images via tags en digests, waardoor teams direct kunnen zien welke versies van een image kwetsbaarheden bevatten. Voor Nederlandse overheidsorganisaties is deze integratie cruciaal omdat het zorgt voor continue controle van containerartefacten zonder handmatige interventie, wat essentieel is voor het voldoen aan BIO-thema 12.06 over kwetsbaarheidsbeheer. De scanresultaten worden opgeslagen in Defender for Cloud en kunnen worden gebruikt voor policy enforcement, waarbij bijvoorbeeld wordt voorkomen dat kwetsbare images worden gebruikt in productieclusters.

De beveiligingsbeleid-engine binnen Defender for Containers maakt het mogelijk om Kubernetes-native beleid af te dwingen op basis van best practices en organisatie-specifieke eisen. Dit omvat beleid voor pod security standards, network policies, resource limits en secrets management. Wanneer workloads worden geïmplementeerd die niet voldoen aan het beleid, kunnen deze automatisch worden geblokkeerd of worden gemarkeerd voor review. De policy engine integreert met Azure Policy voor Kubernetes, waardoor beveiligingsstandaarden centraal kunnen worden gedefinieerd op managementgroep- of abonnementsniveau en automatisch worden toegepast op alle AKS-clusters. Deze aanpak zorgt voor consistente beveiligingsconfiguraties over verschillende clusters heen, wat bijzonder waardevol is voor organisaties met meerdere ontwikkelteams of omgevingen.

Logging en monitoring vormen de ruggengraat van de Defender for Containers-architectuur. Alle beveiligingsgebeurtenissen, scanresultaten en policy-evaluaties worden gelogd in Log Analytics-werkruimten, waar ze kunnen worden geanalyseerd, gecorreleerd met andere beveiligingssignalen en gebruikt voor compliance-rapportage. De logs bevatten gedetailleerde informatie over gedetecteerde bedreigingen, inclusief de specifieke containers en pods die betrokken zijn, de aard van de activiteit en de aanbevolen remediatiestappen. Voor auditdoeleinden is het belangrijk dat deze logs worden bewaard voor de vereiste bewaartermijn en dat toegang wordt beperkt tot geautoriseerd personeel. Door deze architectuur te begrijpen, kunnen organisaties effectief gebruik maken van alle beveiligingscapaciteiten van Defender for Containers en kunnen ze de implementatie afstemmen op hun specifieke beveiligings- en compliance-eisen.

Stapsgewijze implementatie van Defender for Containers voor AKS-clusters

Het inschakelen van Defender for Containers voor AKS-clusters begint met het verifiëren dat Defender for Cloud op abonnementsniveau is geactiveerd, omdat dit een vereiste is voor alle Defender-plannen. Vervolgens moet de Defender extensie voor AKS worden ingeschakeld op elk cluster waarop containerbeveiliging gewenst is. Dit kan worden gedaan via de Azure Portal, Azure CLI, PowerShell of Infrastructure as Code-templates zoals Bicep of Terraform. Voor Nederlandse overheidsorganisaties wordt aanbevolen om de inschakeling te automatiseren via IaC, zodat nieuwe clusters automatisch worden beveiligd en bestaande configuraties reproduceerbaar en herleidbaar zijn. Het PowerShell-script dat bij dit artikel hoort, kan worden gebruikt om de status te controleren en om clusters te identificeren waarop Defender for Containers nog niet is ingeschakeld.

Tijdens de implementatie moeten verschillende configuratieopties worden overwogen. De Defender extensie kan worden geconfigureerd om automatisch agents te installeren op nieuwe nodes, wat essentieel is voor dynamisch schalende clusters. Daarnaast kan worden ingesteld welke Log Analytics-werkruimte wordt gebruikt voor het opslaan van beveiligingslogs, wat belangrijk is voor organisaties die verschillende werkruimten gebruiken voor verschillende omgevingen of compliance-eisen. Voor clusters die gevoelige workloads draaien, kan het wenselijk zijn om een dedicated Log Analytics-werkruimte te gebruiken met extra beveiligingsmaatregelen zoals customer-managed keys en geografische beperkingen. De configuratie kan worden aangepast aan de specifieke behoeften van elk cluster, maar voor consistentie wordt aanbevolen om een standaardconfiguratie te definiëren die wordt toegepast op alle productieclusters.

Azure Container Registry-integratie vereist expliciete configuratie om automatische scanning in te schakelen. Wanneer meerdere ACR-registry's worden gebruikt, moet voor elk registry worden geconfigureerd dat scanning is ingeschakeld. Dit kan worden gedaan via de Azure Portal in de security-instellingen van elk registry, of via PowerShell door de juiste properties in te stellen. Een belangrijk aandachtspunt is dat scanning kosten met zich meebrengt per gescande image, dus organisaties moeten een balans vinden tussen complete scanning-coverage en kostenbeheersing. Voor productieomgevingen wordt aanbevolen om scanning te activeren voor alle registry's, terwijl voor ontwikkelomgevingen kan worden overwogen om alleen kritieke images te scannen of om scanning te beperken tot specifieke tags of namespaces.

Na de technische implementatie moet de configuratie worden gevalideerd om te verifiëren dat alle componenten correct functioneren. Dit omvat het controleren dat agents daadwerkelijk zijn geïnstalleerd op cluster nodes, dat de Defender extensie actief is en dat scanresultaten worden gegenereerd voor nieuwe images. Het PowerShell-script biedt monitoringfunctionaliteit om deze status te controleren en om te rapporteren over de compliance van clusters. Daarnaast moeten security teams worden getraind in het interpreteren van waarschuwingen en scanresultaten, zodat zij effectief kunnen reageren op beveiligingsincidenten. Voor organisaties met meerdere clusters is het belangrijk om een gestandaardiseerd proces te hebben voor het inschakelen van Defender for Containers, zodat nieuwe clusters automatisch worden beveiligd zonder dat dit handmatig moet worden gecontroleerd of geconfigureerd.

Ten slotte moet de implementatie worden gedocumenteerd in architectuur- en beveiligingsdocumentatie, inclusief welke clusters zijn beveiligd, welke configuraties zijn toegepast en wie verantwoordelijk is voor het onderhoud. Deze documentatie is essentieel voor compliance-audits en voor het overdragen van kennis binnen de organisatie. Door Defender for Containers op een gestructureerde en gedocumenteerde manier te implementeren, kunnen Nederlandse overheidsorganisaties profiteren van geavanceerde containerbeveiliging terwijl ze voldoen aan de vereisten voor aantoonbare beveiliging en governance.

Monitoring en operationele bewaking van containerbeveiliging

Gebruik PowerShell-script defender-containers-enabled.ps1 (functie Invoke-Monitoring) – Controleert of Defender for Containers is ingeschakeld op AKS-clusters en rapporteert de beveiligingsstatus van container workloads..

Effectieve monitoring van Defender for Containers is essentieel om te waarborgen dat de beveiligingsoplossing continu actief blijft en om tijdig te kunnen reageren op gedetecteerde bedreigingen. Het monitoringproces omvat het regelmatig controleren van de status van de Defender extensie op elk AKS-cluster, het analyseren van beveiligingswaarschuwingen en het beoordelen van kwetsbaarheidsscanresultaten. Het PowerShell-script dat bij dit artikel hoort, kan worden gebruikt om een overzicht te genereren van alle clusters, hun Defender for Containers-status en eventuele configuratieproblemen. Deze informatie moet regelmatig worden gereviewed door security teams en moet worden gerapporteerd aan management en compliance-teams als onderdeel van de reguliere governance-processen.

Beveiligingswaarschuwingen vormen het hart van de runtime-detectiecapaciteiten van Defender for Containers. Deze waarschuwingen worden gegenereerd wanneer verdachte activiteiten worden gedetecteerd, zoals privilege escalation-pogingen, ongeautoriseerde toegang tot secrets, cryptomining-activiteiten of container breakout-pogingen. Elke waarschuwing bevat gedetailleerde informatie over de gedetecteerde activiteit, inclusief welke containers en pods betrokken zijn, wanneer de activiteit plaatsvond en welke aanbevolen remediatiestappen kunnen worden ondernomen. Security teams moeten deze waarschuwingen regelmatig beoordelen, prioriteren op basis van ernst en impact, en passende actie ondernemen. Voor kritieke waarschuwingen moet een geautomatiseerd alerting-mechanisme zijn ingericht, bijvoorbeeld via Azure Monitor alerts of integratie met SIEM-systemen, zodat incident response-teams onmiddellijk kunnen worden geïnformeerd wanneer ernstige bedreigingen worden gedetecteerd.

Kwetsbaarheidsscanresultaten bieden inzicht in bekende beveiligingsproblemen in container images. Deze resultaten moeten regelmatig worden beoordeeld om te bepalen welke images moeten worden bijgewerkt of vervangen. Voor productieomgevingen is het aanbevolen om automatische waarschuwingen in te stellen voor kritieke kwetsbaarheden met een hoge CVSS-score, zodat teams onmiddellijk kunnen worden geïnformeerd wanneer kwetsbare images worden gebruikt. Daarnaast moeten scanresultaten worden geïntegreerd in de CI/CD-pipeline, zodat nieuwe images automatisch worden gescand voordat ze worden geïmplementeerd en zodat deployments kunnen worden geblokkeerd wanneer kritieke kwetsbaarheden worden gevonden. Dit vormt een belangrijke beveiligingsgate in het deployment-proces en voorkomt dat kwetsbare images in productie belanden.

Compliance monitoring is een ander cruciaal aspect van de operationele bewaking. Organisaties moeten kunnen aantonen dat Defender for Containers actief is op alle relevante clusters en dat beveiligingswaarschuwingen worden behandeld. Het PowerShell-script genereert rapporten die kunnen worden gebruikt als auditbewijs, inclusief welke clusters zijn beveiligd, wanneer Defender for Containers is ingeschakeld en wat de huidige status is. Deze rapporten moeten worden opgeslagen en bewaard voor de vereiste bewaartermijn, conform Nederlandse archiefwetgeving en compliance-eisen. Door monitoring op deze manier te structureren, ontstaat een volwassen beveiligingsbewaking die zowel operationele stabiliteit als compliance-vereisten ondersteunt.

Remediatie en respons op beveiligingsincidenten

Gebruik PowerShell-script defender-containers-enabled.ps1 (functie Invoke-Remediation) – Ondersteunt het inschakelen van Defender for Containers op AKS-clusters waar dit nog niet is geactiveerd en geeft aanbevelingen voor remediatie..

Wanneer monitoring uitwijst dat Defender for Containers niet is ingeschakeld op een of meer AKS-clusters, of wanneer beveiligingswaarschuwingen worden gedetecteerd, moet snelle en gestructureerde remediatie plaatsvinden. Het remediatieproces begint met het identificeren van de oorzaak: is Defender for Containers niet ingeschakeld, is er een configuratiefout, of is er daadwerkelijk een beveiligingsincident? Het PowerShell-script kan helpen bij het identificeren van clusters zonder Defender for Containers, maar voor het onderzoeken van beveiligingswaarschuwingen is handmatige analyse door security experts noodzakelijk. Wanneer een cluster zonder beveiliging wordt geïdentificeerd, moet dit worden behandeld als een hoge prioriteit, vooral voor productieclusters die kritieke workloads draaien.

Voor clusters waarop Defender for Containers nog niet is ingeschakeld, kan remediatie worden uitgevoerd via het PowerShell-script of via de Azure Portal. Het is belangrijk om te verifiëren dat alle vereisten zijn voldaan voordat de inschakeling plaatsvindt, zoals de beschikbaarheid van Defender for Cloud op abonnementsniveau en de juiste rechten voor het wijzigen van clusterconfiguraties. Na de inschakeling moet worden gecontroleerd dat de Defender extensie correct is geïnstalleerd en dat agents daadwerkelijk actief zijn op cluster nodes. Dit kan enige tijd duren, vooral voor grote clusters met veel nodes. Het is aanbevolen om de status na enkele uren opnieuw te controleren en om te verifiëren dat scanresultaten worden gegenereerd en dat runtime-monitoring actief is.

Wanneer beveiligingswaarschuwingen worden gedetecteerd, moet een gestructureerd incident response-proces worden gevolgd. Dit begint met het analyseren van de waarschuwing om te begrijpen wat er precies is gedetecteerd en wat de potentiële impact is. Vervolgens moet worden bepaald of de waarschuwing een false positive is of een echte bedreiging. Voor echte bedreigingen moeten onmiddellijk mitigatiemaatregelen worden genomen, zoals het isoleren van betrokken containers, het blokkeren van verdachte netwerkverbindingen of het verwijderen van gecompromitteerde workloads. Daarnaast moet worden onderzocht hoe de aanval heeft kunnen plaatsvinden en welke aanvullende beveiligingsmaatregelen nodig zijn om herhaling te voorkomen. Alle stappen moeten worden gedocumenteerd voor forensische analyse en compliance-doeleinden.

Voor kwetsbaarheden die worden gedetecteerd in container images, moet een proces zijn ingericht voor het bijwerken of vervangen van kwetsbare images. Dit begint met het identificeren van welke workloads gebruik maken van kwetsbare images en wat de impact is van het bijwerken van deze images. Vervolgens moeten ontwikkelteams worden geïnformeerd zodat zij nieuwe versies van images kunnen bouwen zonder de gedetecteerde kwetsbaarheden. Deze nieuwe images moeten opnieuw worden gescand om te verifiëren dat de kwetsbaarheden zijn opgelost voordat ze worden geïmplementeerd in productie. Voor kritieke kwetsbaarheden kan het noodzakelijk zijn om tijdelijk workloads te stoppen of te isoleren totdat patches beschikbaar zijn. Door dit proces te automatiseren via CI/CD-pipelines en policy enforcement, kunnen organisaties snel reageren op kwetsbaarheden en ervoor zorgen dat alleen beveiligde images worden gebruikt in productieomgevingen.

Ten slotte moeten alle remediatie-acties worden gedocumenteerd en geëvalueerd om lessen te leren en processen te verbeteren. Dit omvat het analyseren van waarom bepaalde clusters niet waren beveiligd, welke beveiligingswaarschuwingen het meest voorkomen en hoe effectief de respons was op gedetecteerde bedreigingen. Deze informatie kan worden gebruikt om preventieve maatregelen te versterken, om training te verbeteren en om processen te optimaliseren. Door remediatie op deze manier te benaderen, kunnen organisaties niet alleen individuele problemen oplossen, maar ook hun algehele beveiligingspostuur continu verbeteren.

Compliance, governance en auditbaarheid

Defender for Containers speelt een cruciale rol bij het voldoen aan verschillende compliance- en beveiligingsstandaarden die relevant zijn voor Nederlandse overheidsorganisaties. De implementatie van deze beveiligingsoplossing helpt bij het aantonen van naleving van internationale normen zoals ISO 27001, nationale normen zoals de BIO, en Europese richtlijnen zoals NIS2. Voor elke normenkader zijn specifieke controles relevant die worden ondersteund door Defender for Containers-functionaliteiten.

De CIS Kubernetes Benchmark bevat meerdere controles die direct worden ondersteund door Defender for Containers. Control 5.2.1 vereist dat container images worden gescand op kwetsbaarheden, wat wordt geborgd door de Azure Container Registry-integratie. Control 5.2.2 vereist runtime-beveiliging voor containers, wat wordt geleverd door de Defender agent voor Kubernetes. Control 5.3.1 vereist dat pod security policies worden geïmplementeerd, wat wordt ondersteund door de policy engine binnen Defender for Containers. Door deze controles te implementeren via Defender for Containers, kunnen organisaties aantonen dat zij voldoen aan best practices voor Kubernetes-beveiliging zoals gedefinieerd door het Center for Internet Security.

De BIO (Baseline Informatiebeveiliging Overheid) bevat thema's die direct verband houden met containerbeveiliging. Thema 12.06 richt zich op kwetsbaarheidsbeheer en vereist dat organisaties systematisch kwetsbaarheden identificeren, beoordelen en verhelpen. Defender for Containers ondersteunt dit thema door automatische scanning van container images op bekende kwetsbaarheden en het genereren van rapporten die kunnen worden gebruikt voor kwetsbaarheidsbeheerprocessen. Thema 14.02 betreft veilige ontwikkeling en vereist dat organisaties beveiligingsmaatregelen implementeren tijdens de ontwikkelings- en implementatiefase. De runtime-detectie en policy enforcement-functionaliteiten van Defender for Containers helpen bij het waarborgen van veilige containerimplementaties. Thema 16.01 richt zich op logging en monitoring en vereist dat relevante gebeurtenissen worden gelogd en gemonitord. De uitgebreide logging-capaciteiten van Defender for Containers voldoen aan deze vereisten door alle beveiligingsgebeurtenissen vast te leggen in Log Analytics.

ISO 27001 bevat controles die relevant zijn voor containerbeveiliging. Control A.12.6.1 betreft het beheer van technische kwetsbaarheden en vereist dat organisaties tijdig informatie over technische kwetsbaarheden ontvangen, deze beoordelen en passende maatregelen nemen. Defender for Containers voorziet in deze behoefte door continue scanning en rapportage van kwetsbaarheden in container images. Control A.14.2.1 betreft veilige systeemengineering en vereist dat beveiligingsmaatregelen worden geïmplementeerd tijdens de ontwikkeling en implementatie van systemen. De Kubernetes policy enforcement en runtime-detectie-functionaliteiten ondersteunen deze control. Control A.17.2.1 betreft het monitoren van informatiebeveiligingssystemen en vereist dat organisaties informatiebeveiligingsgebeurtenissen monitoren. De monitoring-capaciteiten van Defender for Containers voldoen aan deze vereiste door continue runtime-monitoring en waarschuwingen te bieden.

De NIS2-richtlijn vereist dat organisaties passende technische en organisatorische maatregelen nemen om cybersecurity-risico's te beheren. Artikel 21 vereist specifiek dat organisaties passende maatregelen implementeren voor het detecteren en reageren op cybersecurity-incidenten. Defender for Containers helpt bij het voldoen aan deze vereisten door geavanceerde runtime-detectie van bedreigingen en door waarschuwingen te genereren wanneer verdachte activiteiten worden gedetecteerd. Voor Nederlandse overheidsorganisaties is het belangrijk om te beseffen dat compliance een continu proces is, niet een eenmalige activiteit. Regelmatige monitoring en auditing zijn essentieel om te waarborgen dat Defender for Containers actief blijft en dat beveiligingswaarschuwingen worden behandeld. Auditbewijs zoals Defender extensie-status, kwetsbaarheidsscanresultaten, runtime alerts en policy compliance-rapporten moeten worden bewaard voor de vereiste bewaartermijn van zeven jaar, conform Nederlandse archiefwetgeving.

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 Controleert en beheert Defender for Containers-status voor AKS-clusters .DESCRIPTION Dit script helpt om inzicht te krijgen in de Defender for Containers-configuratie voor Azure Kubernetes Service (AKS)-clusters. Het controleert of de Defender extensie is ingeschakeld op clusters, of ACR-integratie is geconfigureerd en geeft aanbevelingen voor remediatie waar nodig. In LocalDebug-modus wordt voorbeelddata gebruikt zodat het script ook zonder actieve Azure-verbinding getest kan worden. .NOTES Filename: defender-containers-enabled.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Related JSON: content/azure/aks/defender-containers-enabled.json Modules: Az.Accounts, Az.Resources, Az.Aks, Az.Security .EXAMPLE .\defender-containers-enabled.ps1 -Monitoring -LocalDebug Voert een monitoringcontrole uit op basis van voorbeelddata. .EXAMPLE .\defender-containers-enabled.ps1 -Monitoring Toont een overzicht van AKS-clusters en de Defender for Containers-status. .EXAMPLE .\defender-containers-enabled.ps1 -Remediation Geeft aanbevelingen voor het inschakelen van Defender for Containers op clusters. #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Resources, Az.Aks, Az.Security [CmdletBinding()] param( [Parameter(HelpMessage = "Voer een monitoringinventarisatie uit.")] [switch]$Monitoring, [Parameter(HelpMessage = "Ondersteun het opstellen van remediatie- en verbeteracties.")] [switch]$Remediation, [Parameter(HelpMessage = "Gebruik voorbeelddata in plaats van live Azure-calls (voor lokale debug).")] [switch]$LocalDebug, [Parameter(HelpMessage = "Toon alleen welke acties geadviseerd worden, zonder wijzigingen door te voeren.")] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' $PolicyName = 'Defender for Containers op AKS-clusters' function Connect-AzureContext { if ($script:LocalDebug) { Write-Verbose "LocalDebug is ingeschakeld; er wordt geen verbinding met Azure gemaakt." return } if (-not (Get-AzContext -ErrorAction SilentlyContinue)) { Write-Verbose "Geen actieve Az-context gevonden; probeer Connect-AzAccount uit te voeren." Connect-AzAccount -ErrorAction Stop | Out-Null Write-Host "Verbonden met Azure." -ForegroundColor Green } } function Get-DefenderContainersStatus { <# .SYNOPSIS Haalt de Defender for Containers-status op voor alle AKS-clusters. .OUTPUTS PSCustomObject met clusterinformatie en samenvatting. #> [CmdletBinding()] param( [switch]$UseDebugData ) if ($UseDebugData) { $clusters = @( [pscustomobject]@{ Name = 'aks-prod-cluster' SubscriptionId = '00000000-0000-0000-0000-000000000000' SubscriptionName = 'Production Subscription' ResourceGroup = 'rg-aks-prod' Location = 'westeurope' DefenderExtensionEnabled = $true DefenderAgentInstalled = $true AcrIntegrationEnabled = $true }, [pscustomobject]@{ Name = 'aks-dev-cluster' SubscriptionId = '11111111-1111-1111-1111-111111111111' SubscriptionName = 'Development Subscription' ResourceGroup = 'rg-aks-dev' Location = 'westeurope' DefenderExtensionEnabled = $false DefenderAgentInstalled = $false AcrIntegrationEnabled = $false } ) } else { $clusters = @() $subscriptions = Get-AzSubscription | Where-Object { $_.State -eq 'Enabled' } foreach ($sub in $subscriptions) { Set-AzContext -SubscriptionId $sub.Id -ErrorAction SilentlyContinue | Out-Null Write-Verbose "Controleren van abonnement: $($sub.Name) ($($sub.Id))" try { $aksClusters = Get-AzAksCluster -ErrorAction SilentlyContinue foreach ($cluster in $aksClusters) { $extension = $cluster.AddonProfiles | Where-Object { $_.Keys -contains 'microsoft.azuredefender.kubernetes' } $defenderExtensionEnabled = ($null -ne $extension -and $extension.Values.Enabled -eq $true) # Controleren of Defender for Cloud actief is op abonnementsniveau $defenderForContainers = Get-AzSecurityPricing -Name 'Containers' -ErrorAction SilentlyContinue $defenderEnabledAtSubscription = ($defenderForContainers.PricingTier -eq 'Standard') # Voor een volledige controle zou hier ook gekeken moeten worden naar: # - Of agents daadwerkelijk draaien op nodes (vereist kubectl toegang) # - ACR-integratie status (vereist ACR-controle per registry) $obj = [pscustomobject]@{ Name = $cluster.Name SubscriptionId = $sub.Id SubscriptionName = $sub.Name ResourceGroup = $cluster.ResourceGroupName Location = $cluster.Location DefenderExtensionEnabled = $defenderExtensionEnabled DefenderEnabledAtSubscription = $defenderEnabledAtSubscription DefenderAgentInstalled = $defenderExtensionEnabled # Vereenvoudigde aanname AcrIntegrationEnabled = $null # Zou apart gecontroleerd moeten worden } $clusters += $obj } } catch { Write-Verbose "Kon geen AKS-clusters ophalen voor abonnement $($sub.Name): $_" } } } $enabledCount = ($clusters | Where-Object { $_.DefenderExtensionEnabled -eq $true }).Count $disabledCount = ($clusters | Where-Object { $_.DefenderExtensionEnabled -eq $false }).Count $summary = [pscustomobject]@{ TotalClusters = $clusters.Count DefenderEnabledClusters = $enabledCount DefenderDisabledClusters = $disabledCount AllClusters = $clusters } return $summary } function Invoke-Monitoring { <# .SYNOPSIS Voert een gedetailleerde monitoringcontrole uit. .DESCRIPTION Toont een overzicht van AKS-clusters en hun Defender for Containers-status, zodat beheerders gericht vervolgacties kunnen plannen. #> [CmdletBinding()] param() Connect-AzureContext $result = Get-DefenderContainersStatus -UseDebugData:$LocalDebug Write-Host "" -ForegroundColor White Write-Host "========================================" -ForegroundColor Cyan Write-Host $PolicyName -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host ("Totaal AKS-clusters: {0}" -f $result.TotalClusters) -ForegroundColor White Write-Host ("Met Defender for Containers ingeschakeld: {0}" -f $result.DefenderEnabledClusters) -ForegroundColor ($(if ($result.DefenderEnabledClusters -eq $result.TotalClusters) { 'Green' } else { 'Yellow' })) Write-Host ("Zonder Defender for Containers: {0}" -f $result.DefenderDisabledClusters) -ForegroundColor ($(if ($result.DefenderDisabledClusters -eq 0) { 'Green' } else { 'Red' })) if ($result.TotalClusters -eq 0) { Write-Host "`nGeen AKS-clusters gevonden in de huidige Azure-context." -ForegroundColor Yellow return } if ($result.DefenderDisabledClusters -gt 0) { Write-Host "`nDe volgende clusters hebben Defender for Containers NIET ingeschakeld:" -ForegroundColor Yellow $result.AllClusters | Where-Object { -not $_.DefenderExtensionEnabled } | Select-Object Name, ResourceGroup, Location, SubscriptionName | Format-Table -AutoSize Write-Host "`nBelangrijk:" -ForegroundColor Yellow Write-Host "- Defender for Cloud moet eerst zijn ingeschakeld op abonnementsniveau" -ForegroundColor Yellow Write-Host "- De Defender extensie moet worden ingeschakeld op elk cluster" -ForegroundColor Yellow Write-Host "- Gebruik -Remediation voor aanbevelingen" -ForegroundColor Yellow } else { Write-Host "`nAlle AKS-clusters hebben Defender for Containers ingeschakeld." -ForegroundColor Green } } function Invoke-Remediation { <# .SYNOPSIS Geeft aanbevelingen voor remediatie rond Defender for Containers. .DESCRIPTION Dit script wijzigt zelf geen resources, maar rapporteert waar Defender for Containers ontbreekt en geeft gerichte aanbevelingen zodat beheerders via Azure Portal, ARM/Bicep of Terraform de juiste wijzigingen kunnen doorvoeren. #> [CmdletBinding()] param() Connect-AzureContext $result = Get-DefenderContainersStatus -UseDebugData:$LocalDebug Write-Host "" -ForegroundColor White Write-Host "========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Remediatieadvies" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan if ($result.TotalClusters -eq 0) { Write-Host "`nGeen AKS-clusters gevonden. Geen remediatie nodig." -ForegroundColor Green return } $clustersWithoutDefender = $result.AllClusters | Where-Object { -not $_.DefenderExtensionEnabled } if ($clustersWithoutDefender.Count -eq 0) { Write-Host "`nAlle clusters hebben Defender for Containers ingeschakeld. Geen remediatie nodig." -ForegroundColor Green return } Write-Host "`nClusters zonder Defender for Containers:" -ForegroundColor Red $clustersWithoutDefender | Select-Object Name, ResourceGroup, Location, SubscriptionName | Format-Table -AutoSize Write-Host "`nREMEDIATIESTAPPEN:" -ForegroundColor Cyan Write-Host "1. Verifieer dat Defender for Cloud is ingeschakeld op abonnementsniveau:" -ForegroundColor White Write-Host " Get-AzSecurityPricing -Name 'Containers' -PricingTier 'Standard'" -ForegroundColor Gray Write-Host "" Write-Host "2. Schakel Defender for Containers in voor elk cluster via Azure Portal:" -ForegroundColor White Write-Host " Azure Portal -> Defender for Cloud -> Environment Settings -> [Subscription] -> Defender plans -> Containers -> On" -ForegroundColor Gray Write-Host "" Write-Host "3. Of gebruik Azure CLI:" -ForegroundColor White Write-Host " az aks enable-addons --addons azure-defender --name <cluster-name> --resource-group <resource-group>" -ForegroundColor Gray Write-Host "" Write-Host "4. Verifieer de status na enkele minuten:" -ForegroundColor White Write-Host " Get-AzAksCluster -ResourceGroupName <rg> -Name <cluster> | Select-Object -ExpandProperty AddonProfiles" -ForegroundColor Gray Write-Host "" Write-Host "5. Configureer ACR-integratie voor automatische image-scanning:" -ForegroundColor White Write-Host " Azure Portal -> Container Registry -> Security -> Microsoft Defender for Cloud -> Enable" -ForegroundColor Gray if ($WhatIf) { Write-Host "`n[WhatIf] Er zouden geen wijzigingen worden doorgevoerd." -ForegroundColor Yellow } else { Write-Host "`nBELANGRIJK: Dit script maakt zelf geen wijzigingen. Voer bovenstaande stappen handmatig uit." -ForegroundColor Yellow } } function Invoke-Implementation { <# .SYNOPSIS Wrapper om remediatieadvies aan te roepen. .DESCRIPTION Voor integratie in generieke tooling kan deze functie worden gebruikt als standaard implementatie-entrypoint. #> [CmdletBinding()] param() Invoke-Remediation } try { if ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { Invoke-Remediation } else { # Korte samenvatting voor snelle checks Connect-AzureContext $result = Get-DefenderContainersStatus -UseDebugData:$LocalDebug Write-Host ("Defender for Containers op AKS: {0}/{1} clusters beveiligd" -f ` $result.DefenderEnabledClusters, $result.TotalClusters) } } catch { Write-Error $_ exit 1 }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder Defender for Containers blijven runtime-bedreigingen, kwetsbare container images en Kubernetes-misconfiguraties ongedetecteerd. Dit kan leiden tot container breakout-aanvallen, privilege escalation, cryptomining, datalekken en compromittatie van kritieke workloads. Het risico is kritiek voor productieclusters en multi-tenant-omgevingen waar containerisolatie cruciaal is.

Management Samenvatting

Defender for Containers biedt uitgebreide beveiliging voor AKS-clusters via runtime-detectie van bedreigingen, automatische kwetsbaarheidsscanning van container images en Kubernetes policy enforcement. Implementatie: schakel Defender extensie in op elk cluster, configureer ACR-integratie voor image-scanning en stel monitoring in voor waarschuwingen en compliance. Verplicht voor alle productie-AKS-clusters. Vereist voor CIS Kubernetes Benchmark, BIO 12.06/14.02/16.01, ISO 27001 en NIS2 Artikel 21.