More Info:
Create clusters with the private API server endpoint enabled and public endpoint access disabled so that all communication between nodes and the API server stays within the VPC.Risk Level
CriticalAddress
SecurityCompliance Standards
- CIS EKS
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
Identify clusters and current endpoint exposure
- On any machine with AWS CLI access:
- For each cluster:
- Record whether
privateistrue,publicisfalse, and whether any CIDRs are allowed.
- On any machine with AWS CLI access:
-
Review access requirements and break-glass needs
- With your platform/network team, decide whether:
- All administrative/API access can occur from within the VPC via peering/VPN/Direct Connect.
- Any users or automation require public API access (for break-glass or existing workflows).
- If public access is truly unnecessary, plan to set
endpointPublicAccess=false. - If some public access is required, document the minimal set of IP CIDRs that must reach the API and prepare to restrict via
publicAccessCidrsinstead of fully disabling public access.
- With your platform/network team, decide whether:
-
Confirm network path for private-only access
- Verify that all nodes and admin entry points have a private path to the cluster’s VPC subnets:
- Check VPC peering / Transit Gateway / VPN / Direct Connect configuration.
- Confirm that security groups, route tables, and NACLs permit HTTPS (443) to the EKS control plane private endpoint from admin networks and node subnets.
- If this is not currently in place, implement and validate connectivity before disabling public access.
- Verify that all nodes and admin entry points have a private path to the cluster’s VPC subnets:
-
Update cluster endpoint configuration (if approved)
- On any machine with AWS CLI access, for a cluster where private-only is acceptable:
- If you must temporarily retain restricted public access instead of disabling it:
- Schedule and communicate this change; expect an impact on any clients currently reaching the public endpoint.
- On any machine with AWS CLI access, for a cluster where private-only is acceptable:
-
Verify the configuration and connectivity
- Confirm endpoint flags:
Ensure
"endpointPrivateAccess": trueand"endpointPublicAccess": false(or, if intentionally retained,truewith minimalpublicAccessCidrs). - From a bastion or admin host inside the VPC, verify
kubectlstill works:
- Confirm endpoint flags:
-
Document the decision and residual risk
- Record for each cluster:
- Final values of
endpointPrivateAccess,endpointPublicAccess, andpublicAccessCidrs. - The rationale if public access is not fully disabled.
- Any compensating controls (IP restrictions, strong auth, logging).
- Final values of
- Revisit this decision periodically and after major network/organizational changes.
- Record for each cluster:
Using kubectl
Using kubectl
kubectl cannot be used to enable a private EKS API endpoint or disable public access, because this setting is part of the managed control plane configuration. Make these changes via the AWS console, AWS CLI, or your IaC definitions as described in the Manual Steps section.
Automation
Automation

