The API server is on the internet
AWS’s own docs say it plainly: “By default, this API server endpoint is public to the internet.” Access is still authenticated — IAM plus RBAC — but the front door of your cluster’s control plane answers to the whole internet, which means credential mistakes, token leaks, and future auth CVEs are internet-exploitable instead of VPC-exploitable. Most teams never revisit it, because the cluster worked on day one and the endpoint setting lives in a console tab nobody opens twice.
# a fresh cluster's endpoint access endpointPublicAccess = true◂ the control plane answers the internet endpointPrivateAccess = false publicAccessCidrs = 0.0.0.0/0
Enable the private endpoint; then either restrict publicAccessCidrs to your offices/VPN or disable public access outright. Do it early — the change is disruptive to bolt on after tooling has assumed a public endpoint.
Tradeoff — Private-only access needs a path into the VPC (VPN, transit gateway, bastion, or CloudShell) — and your CI’s kubectl needs that path too.