Skip to main content

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 Addresses

Risk Level

Medium

Address

Security

Compliance 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

Manual Steps

  1. Identify clusters and current private node setting
    • Run on: any machine with gcloud configured.
    • List clusters and locations:
    • For each cluster, check whether private nodes are enabled:
    • Record which clusters return false or empty; these do not have private nodes.
  2. 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=true requirement 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.
  3. 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.
  4. 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.
  5. 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:
  6. Verify compliance for all in-scope clusters
    • Re-run for each cluster:
    • Confirm the value is true for all clusters where you intended private nodes; ensure any remaining false entries have an approved, documented exception.
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.

Additional Reading: