Check ID:
Provider: Azure
Service:
Severity: HIGH
Categories:
Resource type:
aks_clusters_public_access_disabledProvider: Azure
Service:
aksSeverity: HIGH
Categories:
internet-exposed, trust-boundaries, cluster-securityResource type:
microsoft.containerservice/managedclustersWhat this check verifies
AKS clusters expose a private control plane FQDN and agent pools haveenable_node_public_ip=false.
The evaluation focuses on the presence of a private FQDN and the absence of public IPs on nodes.
Risk
Exposed node IPs or a publicly reachable API increase attack surface, impacting confidentiality and integrity.- Internet scans reach kubelet, NodePort, or management agents
- Exploits enable RCE and lateral movement
- Metadata/secret theft leads to credential compromise
Recommendation
Adopt private clusters and eliminate node public IPs:- Set
enable_node_public_ip=falseon all pools - Use Private Link or peered VNets with VPN/ExpressRoute for admin access
- If public API is unavoidable, restrict with IP ranges and strong auth
- Enforce NSGs/firewalls and least privilege for layered defense
Remediation
- Terraform
- Native IaC
- Dashboard steps
References
- https://learn.microsoft.com/en-us/azure/aks/private-clusters?tabs=azure-portal
- https://learn.microsoft.com/en-us/azure/aks/access-private-cluster?tabs=azure-cli
- https://support.icompaas.com/support/solutions/articles/62000234657-ensure-clusters-are-created-with-private-endpoint-enabled-and-public-access-disabled
- https://docs.trendmicro.com/en-us/documentation/article/trend-vision-one-cis-aks17-542
Where this check fires
This check runs on every scheduled scan against your Azure account. Findings appear at Cloud Security → Findings filterable byCheck ID = aks_clusters_public_access_disabled. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to Azure checks