Skip to main content

More Info:

Create clusters with private nodes that have only private IP addresses, preventing direct public network exposure of worker nodes.

Risk Level

High

Address

Security

Compliance Standards

  • CIS OKE

Triage and Remediation

Remediation

Manual Steps

  1. Identify whether node pools use public IPs (OCI CLI – any machine with OCI CLI access)
    If isPublicIp is true for any node pool, those nodes are not private.
  2. Confirm at the instance level that worker nodes do not have public IPs (OCI CLI – any machine with OCI CLI access)
    Any non-empty publicIp indicates non‑private nodes.
  3. Decide on remediation strategy (design decision – no command)
    • If any node pool has is-public-ip-enabled = true or nodes show publicIp values, decide whether to:
      • Recreate the node pool(s) with private nodes only, and cordon/drain/migrate workloads, or
      • Create new private-only node pools and then delete the public node pools after workload migration.
    • Ensure you have private connectivity (VCN, subnets, NAT/egress, bastion, etc.) to manage private nodes.
  4. Create a new private-only node pool (remediation – any machine with OCI CLI access)
    Ensure the subnet is private (no public IP assignment, appropriate route tables/NSGs).
  5. Migrate workloads and remove old public node pools (any machine with kubectl and OCI CLI access)
    • Cordon and drain old public nodes:
    • After workloads are stable on the new private node pool, delete the old node pool(s):
  6. Verify remediation (OCI CLI – any machine with OCI CLI access)
    Confirm all node pools show isPublicIp = false and all worker node instances have empty publicIp values.
kubectl cannot change whether cluster nodes use private or public IP addresses; that setting is managed in the cloud provider’s control‑plane / cluster configuration (console, CLI, or IaC) where the cluster is created or updated. Refer to the Manual Steps section for how to review and remediate this setting in your environment.
What output indicates a problem
  • If the “Nodes with ExternalIP set” section lists any node and IP, that node appears to be publicly reachable and violates the requirement for private nodes.
  • If the heuristic section lists nodes with non‑RFC1918 InternalIP, those nodes might be using publicly routable addresses and should be manually verified in the cloud provider configuration.