Skip to main content

More Info:

Enable Endpoint Private Access to restrict access to the clusters control plane to only an allowlist of authorized IPs.

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 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

Manual Steps

  1. Gather current cluster endpoint configuration
    Run on any machine with AWS CLI access and IAM permissions:
    Replace us-east-1 and my-eks-cluster with your actual region and cluster name.
  2. 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 /32 or 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.
  3. Configure private endpoint access (if not already enabled)
    If endpointPrivateAccess is false, 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.
  4. 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):
    Replace the example CIDRs with your approved ranges.
  5. Verify the updated configuration
    After the update completes (may take a few minutes), re-run on any machine with AWS CLI access:
    Confirm endpointPrivateAccess is true, and that endpointPublicAccess and publicAccessCidrs match your chosen policy.
  6. 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.
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.