More Info:
Disable Public Ip Addresses For Cluster Nodes, So That They Only Have Private Ip Addresses. Private Nodes Are Nodes With No Public Ip AddressesRisk Level
MediumAddress
SecurityCompliance Standards
- APRA CPS 234 (Australia)
- BSI C5 (Germany)
- Brazil LGPD
- CCPA / CPRA (California)
- CIS Critical Security Controls v8
- CIS GKE
- CMMC 2.0
- CSA Cloud Controls Matrix v4
- DPDPA
- Digital Operational Resilience Act (EU)
- ISO/IEC 27017
- ISO/IEC 27018
- ISO/IEC 27701
- KSA PDPL
- MAS Technology Risk Management (Singapore)
- MITRE ATT&CK (Cloud)
- NIS2 Directive
- NIST SP 800-171
- NYDFS 23 NYCRR 500
- SWIFT Customer Security Controls Framework
- Sarbanes-Oxley IT General Controls
- UK NCSC Cyber Assessment Framework
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
Identify clusters and current private node setting
- Run on: any machine with
gcloudconfigured. - List clusters and locations:
- For each cluster, check whether private nodes are enabled:
- Record which clusters return
falseor empty; these do not have private nodes.
- Run on: any machine with
-
Confirm networking prerequisites and potential impact
- For each non‑private cluster, review its networking:
- Validate that:
- You can create/use a VPC‑native (IP alias) cluster (
ipAllocationPolicy.useIpAliases=truerequirement for private nodes). - Your workloads and admins do not rely on node public IPs (e.g., SSH, direct internet egress). Plan alternatives such as Cloud NAT, private bastion, or IAP.
- You can create/use a VPC‑native (IP alias) cluster (
- For each non‑private cluster, review its networking:
-
Decide remediation strategy: migrate vs. accept risk
- For each non‑private cluster, decide one of:
- Migrate to a new private cluster (recommended).
- Accept and document an exception (include justification, expiration, and periodic review).
- Capture the decision in your internal risk register or change tracking system.
- For each non‑private cluster, decide one of:
-
Plan creation of a new private cluster (if migrating)
- Choose or create a VPC and subnets for node and pod ranges.
- Decide on
--master-ipv4-cidr(control plane CIDR that does not overlap with existing ranges). - Define the full create command (example; adjust values):
- Have this reviewed and approved via your normal change management process.
-
Migrate workloads and decommission old cluster (if migrating)
- Create the new private cluster using the planned command from step 4.
- Update kubeconfig:
- Migrate workloads (e.g., export manifests, helm releases, or use GitOps) and cut over traffic (DNS, load balancers, external dependencies) to the new cluster.
- When fully migrated and validated, delete the old non‑private cluster:
-
Verify compliance for all in-scope clusters
- Re-run for each cluster:
- Confirm the value is
truefor all clusters where you intended private nodes; ensure any remainingfalseentries have an approved, documented exception.
- Re-run for each cluster:
Using kubectl
Using kubectl
kubectl cannot modify whether GKE nodes use public or private IPs; this setting is defined on the managed control plane via GCP (gcloud/console/Terraform). To address this finding, make the change at the cloud provider level as described in the Manual Steps section.
Automation
Automation

