More Info:
Create clusters with private nodes so nodes have only internal IP addresses and are not directly reachable from the internet. This reduces the node attack surface.Risk Level
HighAddress
SecurityCompliance Standards
- CIS GKE
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
Identify clusters without private nodes
- Run on: any machine with
gcloudaccess.
- Note clusters where
privateClusterConfig.enablePrivateNodesis empty orfalse.
- Run on: any machine with
-
Assess exposure and necessity of public nodes
- For each non-private cluster from step 1, review:
- Whether workloads require direct node access from the internet.
- Whether connectivity can be provided via load balancers, Ingress, VPN, or Cloud Interconnect instead of public node IPs.
- Document clusters where private nodes are feasible and desirable.
- For each non-private cluster from step 1, review:
-
Check use of IP aliases and master CIDR (for planning migration)
- Run on: any machine with
gcloudaccess.
- If
useIpAliasesis notTrue, note that the cluster cannot simply be flipped to private nodes; a new cluster will be required to meet the remediation.
- Run on: any machine with
-
Decide remediation approach per cluster
- If the cluster already has
useIpAliases=Trueand your networking design allows it, plan to recreate the cluster with--enable-private-nodes(GKE does not support toggling this on an existing non-private cluster). - If
useIpAliases=False, plan a migration to a new cluster that meets all three flags:--enable-private-nodes,--enable-ip-alias, and--master-ipv4-cidr.
- If the cluster already has
-
Create a compliant replacement cluster
- Run on: any machine with
gcloudaccess. Choose appropriate ranges for your environment.
- Migrate workloads (namespaces, workloads, services, ingress, and associated IAM, firewall, and networking rules) from the old cluster to the new private one, then decommission the old cluster.
- Run on: any machine with
-
Verify remediation
- Run on: any machine with
gcloudaccess.
- Confirm that
enablePrivateNodesistrue,useIpAliasesistrue, andmasterIpv4CidrBlockis set.
- Run on: any machine with
Using kubectl
Using kubectl
kubectl cannot enable private nodes or change GKE cluster networking; this configuration is managed at the cloud provider control-plane level via gcloud, the GCP console, or IaC. Refer to the Manual Steps section for how to review the current cluster and recreate or reconfigure it with private nodes enabled.
Automation
Automation
- Any cluster row with:
PRIVATEcolumn showingfalse, orNOTEcolumn containingNOT PRIVATE (finding)

