Profile applicability: Level 1 - Cluster / Control Plane
Enable Endpoint Private Access to restrict access to your cluster's control plane
to only a list of authorized IP addresses. This measure specifies a restricted range
of IP addresses that are allowed to access your cluster’s control plane, which, in
combination with Transport Layer Security (TLS) and authentication, secures access
from the public internet. Although Kubernetes Engine provides the capability to manage
your cluster from anywhere, you might opt to limit access further to specific IP addresses
under your control. Authorized networks enhance security by shielding your cluster
from potential outsider attacks by limiting external access to designated addresses,
and from insider threats by preventing access even if master certificates are accidentally
leaked outside your organization. Care must be taken when setting up Endpoint Private
Access to include all necessary IP addresses in the authorized list to avoid unintentionally
blocking legitimate access to the cluster’s control plane.
Impact
When implementing Endpoint Private Access, ensure all required networks are included
in the allowlist to avoid blocking access to your cluster's control plane.
Audit
Check the following settings to confirm they are 'enabled: true':
export CLUSTER_NAME=<your cluster name>
aws eks describe-cluster --name ${CLUSTER_NAME} --query "cluster.resourcesVpcConfig.endpointPublicAccess"
aws eks describe-cluster --name ${CLUSTER_NAME} --query "cluster.resourcesVpcConfig.endpointPrivateAccess"
Verify that the following is not null:
export CLUSTER_NAME=<your cluster name>
aws eks describe-cluster --name ${CLUSTER_NAME} --query "cluster.resourcesVpcConfig.publicAccessCidrs"
Remediation
Enable private endpoint access to ensure that all communication between your nodes
and the API server stays within your VPC. This also allows you to restrict IP addresses
that can access your API server from the internet or disable internet access entirely.
For example, use the following command to enable private access and limited public
access:
aws eks update-cluster-config --region $AWS_REGION --name $CLUSTER_NAME --resources-vpc-config endpointPrivateAccess=true, endpointPublicAccess=true, publicAccessCidrs="203.0.113.5/32"
Note: CIDR blocks cannot include reserved addresses. Refer to the EKS Cluster Endpoint
documentation for detailed information.
