💼 Management Samenvatting
Security hardening van Azure Kubernetes Service-clusters is essentieel voor Nederlandse overheidsorganisaties om het aanvalsoppervlak te minimaliseren en te voldoen aan de strikte beveiligingseisen uit de BIO, NIS2 en ISO 27001. Een goed geharde AKS-omgeving combineert clusterconfiguratie, runtime-beveiliging, netwerksegmentatie en continue monitoring tot een verdedigingslinie die zowel geautomatiseerde aanvallen als gerichte compromitteringspogingen kan weerstaan.
✓ Azure Kubernetes Service
✓ Containerized Workloads
Kubernetes-clusters vormen de ruggengraat van moderne cloud-native applicaties in de Nederlandse publieke sector, van burgerportalen tot integratieplatformen en dataverwerkingssystemen. Zonder adequate hardening blijft het aanvalsoppervlak groot: de Kubernetes API-server is vaak via het internet bereikbaar, containers draaien met te veel privileges, secrets worden onveilig bewaard, en runtime-afwijkingen blijven onopgemerkt. Dit creëert kansen voor aanvallen zoals privilege escalation, lateral movement tussen workloads, datalekken via misconfigureerde services, en compromittering van het gehele cluster door middel van kwetsbaarheden in onderliggende componenten. Voor Nederlandse overheidsorganisaties brengt dit niet alleen operationele risico's met zich mee, maar ook complianceproblemen: auditors verwachten aantoonbare maatregelen voor het beperken van toegang, het beschermen van gevoelige data, en het detecteren van afwijkingen. Security hardening van AKS is daarom geen optionele toevoeging, maar een fundament onder de Nederlandse Baseline voor Veilige Cloud.
Connection:
Connect-AzAccountRequired Modules: Az.Accounts, Az.Resources, Az.Aks
Implementatie
Dit artikel beschrijft een holistische aanpak voor security hardening van AKS-clusters, specifiek gericht op Nederlandse overheidsorganisaties. We behandelen het verharden van de Kubernetes API-server door autorized IP-ranges, Azure AD-integratie en RBAC-beleid, het beveiligen van node pools door middel van disk encryption, beperkte toegang en automatische updates, het implementeren van Pod Security Standards en security contexts voor containers, het beheren van secrets via Azure Key Vault en Kubernetes Secrets, het configureren van image scanning en runtime protection met Defender voor Containers, en het opzetten van uitgebreide logging en monitoring. Het bijbehorende PowerShell-script ondersteunt u bij het inventariseren van hardening-gerelateerde configuraties, het identificeren van hiaten en het structureel monitoren van de beveiligingsstatus van uw AKS-clusters.
Cluster-level hardening: API-server en controlelaag
De Kubernetes API-server vormt het centrale controle- en beheerpunt van elk AKS-cluster en vereist daarom de strengste beveiligingsmaatregelen. Standaard is de API-server in AKS via een beheerde endpoint bereikbaar, wat betekent dat deze altijd via het internet toegankelijk is, zij het alleen voor geauthenticeerde gebruikers. Voor Nederlandse overheidsorganisaties is dit vaak onacceptabel: de API-server moet uitsluitend bereikbaar zijn vanuit geautoriseerde netwerken, zoals het bedrijfsnetwerk, beveiligde jump-hosts of specifieke Azure Virtual Networks. Configureer daarom authorized IP-ranges voor de API-server, waarbij u expliciet vastlegt welke IP-adressen of netwerkbereiken toegang mogen hebben. Combineer dit met Azure AD-integratie, zodat gebruikers zich met hun organisatie-account kunnen aanmelden en alle API-aanroepen worden gelogd en geaudit. Schakel bovendien lokale accounts (service principals of managed identities) uit waar mogelijk, en zorg dat alle API-toegang via Azure RBAC en Kubernetes RBAC wordt gecontroleerd op basis van least privilege-principes.
Naast netwerkbeperkingen en authenticatie is RBAC-configuratie cruciaal voor cluster hardening. Kubernetes RBAC bepaalt welke gebruikers, service accounts en groepen welke acties mogen uitvoeren op welke resources. Standaard zijn er vaak te permissieve ClusterRoleBindings of RoleBindings aanwezig die brede toegang verlenen aan system-accounts of ontwikkelteams. Door expliciete rollen te definiëren voor verschillende functies – zoals ontwikkelaar, operator, auditor en security officer – en deze te koppelen aan specifieke naamruimten en resource-types, beperkt u de schade die kan ontstaan bij een compromittering. Gebruik Azure RBAC bovendien om te bepalen wie clusters kan maken, wijzigen of verwijderen op het Azure-platformniveau. Zorg dat alle RBAC-wijzigingen worden geregistreerd via Azure Monitor en Kubernetes audit logs, zodat auditors en security teams kunnen aantonen wie welke acties heeft uitgevoerd en wanneer. Tot slot is het belangrijk om regelmatig RBAC-configuraties te reviewen en ongebruikte rollen, bindings en service accounts op te ruimen, zodat het toegangsmodel overzichtelijk blijft en geen verouderde privileges achterblijven.
De controlelaag van AKS omvat naast de API-server ook onderdelen zoals etcd (de distributed key-value store), kube-scheduler en kube-controller-manager. Deze componenten worden door Microsoft beheerd, maar u kunt indirect invloed uitoefenen door ervoor te zorgen dat cluster-updates tijdig worden toegepast en dat u gebruik maakt van de nieuwste Kubernetes-versies met de laatste beveiligingspatches. Schakel automatische updates in voor het cluster, of plan minimaal maandelijks een upgrade naar een ondersteunde versie. Houd daarbij rekening met de backward compatibility van uw workloads en test upgrades eerst in een niet-productieomgeving. Combineer dit met Azure Policy voor AKS, waarmee u kunt afdwingen dat clusters alleen worden gecreëerd met specifieke versies, dat authorized IP-ranges verplicht zijn, en dat bepaalde beveiligingsfeatures zoals Azure AD-integratie of Pod Security Standards standaard zijn ingeschakeld. Door deze maatregelen te combineren, ontstaat een cluster-level hardening-aanpak die het fundament legt voor een veilige containeromgeving.
Node pool hardening: beveiliging van worker nodes
Worker nodes in AKS draaien de daadwerkelijke container workloads en vormen daarom een kritiek onderdeel van de beveiligingsketen. Hardening begint bij de VM-installatie: gebruik Azure Disk Encryption om alle schijven op node level te versleutelen, zodat data-at-rest wordt beschermd, ook wanneer een schijf wordt verwijderd of geëxporteerd. Configureer node pools met een minimale set van benodigde system-onderdelen en schakel ongebruikte services of kernel-modules uit om het aanvalsoppervlak te verkleinen. Gebruik daarnaast dedicated node pools voor workloads met verschillende vertrouwelijkheidsniveaus of compliance-eisen: plaats bijvoorbeeld publieke frontend-workloads in een aparte pool ten opzichte van workloads die gevoelige persoonsgegevens verwerken. Dit maakt het mogelijk om per pool specifieke beveiligingsconfiguraties toe te passen, zoals Taints en Tolerations, en om te voorkomen dat workloads met lagere beveiligingseisen worden geplaatst op nodes die zijn geconfigureerd voor hogere eisen.
Toegang tot worker nodes moet strikt worden beperkt. Standaard zijn SSH-toegang en directe VM-beheer niet nodig, omdat beheer via de Kubernetes API-server verloopt. Schakel SSH-toegang daarom uit of beperk deze tot specifieke authorized keys en beheerbare IP-ranges. Gebruik Azure Bastion of Just-In-Time toegang via Defender voor Cloud wanneer directe toegang nodig is voor troubleshooting, zodat alle verbindingen worden gelogd en tijdelijk zijn. Implementeer bovendien Network Security Groups en Application Security Groups om verkeer naar en van worker nodes te beperken tot alleen de poorten en protocollen die daadwerkelijk nodig zijn: Kubernetes API-server communicatie, container registry-toegang voor image pulls, en monitoring- en logging-verkeer. Blokkeer directe internettoegang vanaf worker nodes waar mogelijk en forceer verkeer via beveiligde proxy's of Azure Firewall, zodat malware downloads, command-and-control-communicatie en ongeautoriseerde externe verbindingen worden voorkomen.
Automatische updates en patchbeheer vormen een essentieel onderdeel van node hardening. Configureer node pools met automatische upgrades ingeschakeld, zodat security patches voor het onderliggende besturingssysteem en Kubernetes-runtime automatisch worden toegepast tijdens geplande maintenance windows. Combineer dit met een proces voor het testen van updates in een staging-omgeving voordat ze naar productie worden gepromoot. Gebruik Azure Update Manager of gelijkaardige tools om patch-compliance te monitoren en om te rapporteren over nodes die achterlopen op security-updates. Houd daarnaast rekening met image-updates: wanneer base images voor containers worden bijgewerkt met nieuwe patches, moeten deze updates ook worden uitgerold naar draaiende workloads. Automatiseer dit proces waar mogelijk via CI/CD-pijplijnen die nieuwe images automatisch scannen, testen en deployen, zodat beveiligingsupdates snel beschikbaar komen zonder handmatige interventie.
Pod en container hardening: runtime-beveiliging
Gebruik PowerShell-script security-hardening.ps1 (functie Invoke-Monitoring) – Inventariseert AKS-clusters en controleert verschillende security hardening-aspecten, waaronder API-server configuratie, node pool-beveiliging en Pod Security Standards..
Pod Security Standards (PSS) zijn een gestandaardiseerde set van security policies die bepalen welke privileges containers mogen hebben binnen een Kubernetes-cluster. AKS ondersteunt drie niveaus: Privileged (geen beperkingen), Baseline (minimale restricties) en Restricted (strikte beperkingen). Voor Nederlandse overheidsorganisaties is het aan te raden om Baseline als minimum te hanteren en Restricted waar mogelijk toe te passen, vooral voor workloads die gevoelige data verwerken. PSS blokkeert bijvoorbeeld containers die als root draaien, host namespaces delen, privileged containers gebruiken, of host paths mounten. Door PSS te configureren op namespace-niveau en deze te koppelen aan Azure Policy voor AKS, zorgt u ervoor dat nieuwe workloads automatisch worden gecontroleerd en dat niet-conforme pods worden geweigerd voordat ze worden gestart. Combineer dit met security contexts op pod- en container-niveau, waarbij u expliciet definieert welke capabilities containers nodig hebben, welke user ID ze gebruiken, en of ze read-only root filesystems moeten hebben.
Container image security is een ander cruciaal aspect van pod hardening. Zorg dat alle container images worden gescand op bekende kwetsbaarheden voordat ze worden geïmplementeerd, gebruik base images van vertrouwde bronnen, en minimaliseer het aantal packages en dependencies in images om het aanvalsoppervlak te verkleinen. Azure Container Registry (ACR) integreert met Defender voor Containers om automatisch images te scannen op CVEs en om images te blokkeren die kritieke kwetsbaarheden bevatten. Implementeer image signing en verification via Notary of andere signing-mechanismen, zodat alleen geverifieerde en goedgekeurde images kunnen worden gebruikt in productieclusters. Gebruik daarnaast image pull secrets en private registries om te voorkomen dat workloads willekeurige images van publieke repositories kunnen ophalen. Door deze maatregelen te combineren met runtime protection van Defender voor Containers, die verdachte activiteiten binnen draaiende containers detecteert en blokkeert, ontstaat een verdedigingslaag die zowel bekende kwetsbaarheden als onbekende aanvallen kan opvangen.
Secrets management vormt een bijzondere uitdaging in containeromgevingen. Hardcodeerde wachtwoorden, API-keys en certificaten in container images of environment variables zijn onacceptabel vanuit security-oogpunt. Gebruik daarom Azure Key Vault in combinatie met de Key Vault Provider voor Secrets Store CSI Driver, zodat secrets veilig worden opgehaald vanuit Key Vault en als volumes worden gemount in pods, zonder dat ze ooit in plain text in de cluster-configuratie of container logs verschijnen. Configureer Key Vault toegangsbeleid op basis van Azure RBAC en managed identities, zodat alleen specifieke workloads toegang hebben tot specifieke secrets. Gebruik daarnaast Kubernetes Secrets alleen voor niet-kritieke configuraties en zorg dat alle Secrets-versleuteling is ingeschakeld via etcd encryption at rest. Implementeer secret rotation policies in Key Vault en zorg dat workloads automatisch nieuwe secrets ophalen wanneer deze worden bijgewerkt, zodat verouderde credentials niet langer bruikbaar zijn na een compromittering of employee offboarding.
Monitoring, logging en compliance-borging
Gebruik PowerShell-script security-hardening.ps1 (functie Invoke-Remediation) – Genereert een overzicht van AKS-clusters met hardening-hiaten en geeft concrete aanbevelingen voor remediatie en verbetering van de beveiligingsstatus..
Uitgebreide logging en monitoring zijn essentieel om security hardening effectief te maken: zonder zichtbaarheid in wat er gebeurt in uw clusters, kunnen aanvallen en misconfiguraties onopgemerkt blijven. Schakel Azure Monitor Container Insights in voor alle AKS-clusters, zodat metrics, logs en events worden verzameld en geanalyseerd. Configureer Kubernetes audit logging om alle API-aanroepen vast te leggen, inclusief wie welke acties heeft uitgevoerd, wanneer dit is gebeurd, en wat het resultaat was. Stel log retention policies in die aansluiten bij compliance-eisen: voor Nederlandse overheidsorganisaties betekent dit vaak minimaal een jaar retentie voor security-relevante logs, met mogelijkheden voor langere retentie voor forensische doeleinden. Integreer logs met een Security Information and Event Management (SIEM) oplossing zoals Azure Sentinel, zodat security teams alle relevante informatie op één plek kunnen analyseren en kunnen reageren op verdachte activiteiten.
Defender voor Containers biedt naast image scanning ook runtime threat detection voor AKS-clusters. De oplossing analyseert pod-gedrag, netwerkverkeer, en system calls om anomalieën te detecteren, zoals privilege escalation, cryptomining, netwerkscanning, of verbindingen naar verdachte externe endpoints. Configureer alerting en automatische response-acties voor kritieke bedreigingen, zodat incidenten direct worden gemitigeerd zonder handmatige interventie. Combineer dit met Azure Policy voor AKS, waarmee u kunt afdwingen dat clusters voldoen aan specifieke hardening-vereisten, zoals het gebruik van authorized IP-ranges, het inschakelen van Pod Security Standards, of het blokkeren van bepaalde container capabilities. Policy-evaluaties worden automatisch uitgevoerd en resultaten worden gerapporteerd naar Azure Policy compliance dashboards, zodat u continu inzicht heeft in welke clusters voldoen aan uw beveiligingsstandaarden en welke nog aandacht vereisen.
Voor compliance-bewijs en auditdoeleinden is het belangrijk om periodiek de hardening-status van alle AKS-clusters te documenteren. Het bijbehorende PowerShell-script ondersteunt u hierbij door een gestructureerd overzicht te genereren van belangrijk hardening-aspecten per cluster, zoals API-server configuratie, node pool-beveiliging, RBAC-instellingen, en compliance met Azure Policy-vereisten. Voer dit script regelmatig uit – bijvoorbeeld maandelijks of kwartaal – en neem de resultaten op in uw risicomanagement- en compliance-rapportages. Documenteer tevens uitzonderingen en afwijkingen, inclusief de onderliggende business- of technische redenen, de geaccepteerde risico's, en de geplande datum waarop de uitzondering wordt opgeheven. Door deze informatie te koppelen aan uw governance- en changemanagement-processen, zorgt u dat hardening-maatregelen niet alleen worden geïmplementeerd, maar ook structureel worden geborgd en gecontinueerd verbeterd als onderdeel van de Nederlandse Baseline voor Veilige Cloud.
Compliance & Frameworks
- CIS M365: Control CIS Kubernetes Benchmark (L1/L2) - Uitgebreide beveiligingsaanbevelingen voor Kubernetes-clusters, inclusief API-server configuratie, RBAC, Pod Security Standards, secrets management, en logging.
- BIO: 09.01, 12.02, 13.01, 14.01, 15.01 - Logische scheiding van omgevingen, netwerksegmentatie, toegangsbeheer, logging en monitoring, en beveiligingsconfiguraties conform de Baseline Informatiebeveiliging Overheid.
- ISO 27001:2022: A.5.15, A.8.20, A.8.28, A.8.29, A.9.2, A.12.6 - Beheer van netwerkbeveiliging, segmentatie, technische configuraties, toegangsbeheer, en logging ter voorkoming van ongeautoriseerde toegang en detectie van beveiligingsincidenten.
- NIS2: Artikel - Technische en organisatorische maatregelen om risico's voor netwerk- en informatiesystemen te beperken, waaronder segmentatie, toegangscontrole, logging en continue monitoring van beveiligingsincidenten.
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).
Risico zonder implementatie
Management Samenvatting
Implementeer een holistische security hardening-aanpak voor AKS-clusters die API-server beveiliging, node pool hardening, Pod Security Standards, secrets management, image scanning, runtime protection, en uitgebreide logging combineert. Gebruik het bijbehorende PowerShell-script om de hardening-status te monitoren, hiaten te identificeren, en compliance te borgen. Zo maakt u security hardening tot een structureel onderdeel van de Nederlandse Baseline voor Veilige Cloud.
- Implementatietijd: 140 uur
- FTE required: 0.6 FTE