설명
EKS 퍼블릭 API에 0.0.0.0/0을 허용하면 모든 IPv4 주소에서 연결을 시도할 수 있습니다. 인증과 Kubernetes 권한 검사가 사라지는 것은 아니지만, 공개 접근이 필요한 경우에도 관리 대상 IP 대역은 최대한 좁혀야 합니다.
전체 허용은 불필요한 인증 시도와 스캔을 받을 범위를 넓힙니다.
잠재적 영향
- 제어 플레인 광범위 노출: 인터넷 전반에서 클러스터 엔드포인트에 접근을 시도할 수 있습니다.
- 공격 시도 증가: 무차별 대입, 취약점 탐색, 자동화 스캔 대상이 될 수 있습니다.
- 운영 위험 확대: 유출된 자격 증명이 네트워크 제한 없이 악용될 가능성이 커집니다.
해결 방법
public_access_cidrs를 관리망이나 승인된 클라이언트의 실제 송신 IP 대역으로 제한하세요.- 사설 엔드포인트를 사용하지 않는 노드가 있다면 노드나 NAT의 송신 주소도 허용 범위에 포함해야 합니다. 변경 전에 노드와 관리 연결을 시험하세요.
- 공개 접근이 필요 없다면 사설 엔드포인트와 연결 경로를 준비한 뒤
endpoint_public_access = false로 전환하세요.
예시
참조한 역할과 서브넷은 별도로 정의하세요. 변경 후의 203.0.113.10/32는 문서용 주소이며, 실제로 승인된 관리 및 필요한 노드 송신 주소로 바꾸어야 합니다.
변경 전
hcl
resource "aws_eks_cluster" "example" {
name = "example"
role_arn = aws_iam_role.example.arn
vpc_config {
subnet_ids = [aws_subnet.example1.id, aws_subnet.example2.id]
endpoint_public_access = true
public_access_cidrs = ["0.0.0.0/0"]
}
}
변경 후
hcl
resource "aws_eks_cluster" "example" {
name = "example"
role_arn = aws_iam_role.example.arn
vpc_config {
subnet_ids = [aws_subnet.example1.id, aws_subnet.example2.id]
endpoint_public_access = true
public_access_cidrs = ["203.0.113.10/32"]
}
}
변경 전에는 모든 IPv4 주소의 퍼블릭 API 접근을 허용합니다. 변경 후에는 지정한 주소로 범위를 좁힙니다. CIDR 제한은 인증과 권한 검사를 대신하지 않으며, 사설 엔드포인트 접근을 제어하는 설정도 아닙니다.