Skip to content
s1ns3nz0 | Known Unknowns
Go back

Adding an Azure AKS Auto-Upgrade Check to Prowler

3 min read

Keeping a Kubernetes cluster secure is not a one-time configuration task. Kubernetes and its managed-service components receive security fixes, and clusters that remain on an old version can drift outside the supported window or miss patches for known vulnerabilities.

Prowler PR #11027 adds aks_cluster_auto_upgrade_enabled, an Azure check that identifies Azure Kubernetes Service (AKS) clusters with no automatic upgrade channel configured.

Why AKS auto-upgrade matters

AKS upgrades are operationally significant. They update the control plane first and then upgrade agent pools one by one. Without a defined upgrade process, teams need to track Kubernetes releases, test compatibility, schedule maintenance, and upgrade every cluster manually.

That manual model can work for a small, tightly managed estate. At scale, however, it creates a predictable failure mode: clusters fall behind, security patches wait for an operational window that never arrives, and eventually a cluster approaches an unsupported version.

AKS auto-upgrade channels provide a managed cadence for staying current. Microsoft describes this as a set-once approach that helps clusters receive AKS and upstream Kubernetes patches without manually redeploying workloads or building a replacement cluster. Microsoft Learn

What the new check does

The new Prowler check is named aks_cluster_auto_upgrade_enabled. It evaluates the AKS cluster’s auto_upgrade_channel setting.

The PR also expands Prowler’s AKS service model with fields shared by several AKS checks, including the auto-upgrade channel, Microsoft Defender status, Azure Monitor status, and local-account setting. This makes the check part of a broader AKS security posture rather than an isolated API lookup.

Select a channel deliberately

For AKS Standard clusters, the available channels represent different trade-offs:

ChannelBehavior
patchApplies the newest supported patch within the current minor version.
stableMoves to the latest patch release on the N-1 supported minor version.
rapidMoves toward the newest supported minor version more quickly.
noneDisables automatic upgrades.

The best channel depends on the workload. A production platform that prioritizes stability may choose stable; a workload that must receive patches as early as possible may choose patch or rapid after appropriate compatibility testing. Microsoft recommends stable or rapid to remain within the supported version window, and notes that AKS Automatic clusters already use the stable channel. Microsoft Learn

The purpose of this check is not to prescribe one channel for every cluster. It ensures that a cluster has an explicit upgrade policy instead of silently relying on none, the default setting for AKS Standard clusters.

Enabling auto-upgrade

An existing AKS Standard cluster can be configured with an upgrade channel using the Azure CLI:

az aks update \
  --resource-group <resource-group-name> \
  --name <cluster-name> \
  --auto-upgrade-channel stable

Teams should also configure a planned maintenance window. This gives the platform a defined period for upgrades and helps align cluster changes with application support coverage. Microsoft recommends a maintenance window of at least four hours for proper operation. Microsoft Learn

Automatic upgrades still require preparation

Enabling an upgrade channel does not eliminate the need to operate Kubernetes well. Before relying on automatic upgrades, teams should validate:

Node image updates need attention as well. The legacy node-image cluster auto-upgrade channel is no longer recommended; use the dedicated node image auto-upgrade capability where it fits the cluster’s upgrade policy. Microsoft Learn

aks_cluster_auto_upgrade_enabled makes one foundational question visible across an Azure estate: does this cluster have a defined path to receive Kubernetes updates? It helps teams find clusters that may otherwise accumulate version drift, then pair the selected channel with maintenance windows, workload resilience, and release validation.

#Azure #AKS #Kubernetes #Prowler #Contribution #CSPM #CloudSecurity #Cloud


Share this post:

Previous Post
Adding an Azure AKS Defender Check to Prowler
Next Post
Adding a GCP Secret Manager Rotation Check to Prowler