More Info:
Enable Endpoint Private Access to restrict access to the clusters control plane to only an allowlist of authorized IPs.Risk Level
MediumAddress
SecurityCompliance Standards
- APRA CPS 234 (Australia)
- BSI C5 (Germany)
- Brazil LGPD
- CCPA / CPRA (California)
- CIS Critical Security Controls v8
- CIS EKS
- CMMC 2.0
- CSA Cloud Controls Matrix v4
- DPDPA
- Digital Operational Resilience Act (EU)
- Essential 8
- 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
-
Gather current cluster endpoint configuration
Run on any machine with AWS CLI access and IAM permissions:Replaceus-east-1andmy-eks-clusterwith your actual region and cluster name. -
Decide desired access model with security/network teams
- Preferred: private-only API (no public access) for production clusters.
- If public access is required (e.g., for admins from office/VPN): define a minimal set of trusted IPv4 CIDR blocks, ideally
/32or small ranges, and ensure they do not overlap with reserved ranges. - Confirm your nodes and any automation can reach the private endpoint via VPC/VPN/Direct Connect/Transit Gateway.
-
Configure private endpoint access (if not already enabled)
IfendpointPrivateAccessisfalse, enable it:This keeps node↔API communication inside the VPC. No pod restart is required, but control‑plane connectivity paths change; ensure routing and security groups allow this. -
Restrict or disable public endpoint access
- To disable public access entirely:
- If public access is needed, tighten CIDRs to your allowlist (example uses single admin IP):
- To disable public access entirely:
-
Verify the updated configuration
After the update completes (may take a few minutes), re-run on any machine with AWS CLI access:ConfirmendpointPrivateAccessistrue, and thatendpointPublicAccessandpublicAccessCidrsmatch your chosen policy. -
Functionally test access paths
- From a node inside the VPC, confirm API access still works:
- From a client IP not in any allowed CIDR, confirm the public endpoint is no longer reachable (connection timeout or TLS failure).
- From an allowed client IP (if public access is enabled), confirm API access succeeds with valid credentials.
- From a node inside the VPC, confirm API access still works:
Using kubectl
Using kubectl
kubectl cannot change control plane endpoint access, because this setting is managed at the cloud provider / EKS control plane level, not via Kubernetes API objects. Use the cloud provider console/CLI/IaC to update the cluster’s endpoint access as described in the Manual Steps section.
Automation
Automation

