퍼블릭 접근이 허용된 EKS 클러스터

EKS API의 공개 접근 필요성을 검토하고 불필요하면 사설 관리 경로로 전환하세요.

설명

EKS의 퍼블릭 Kubernetes API 엔드포인트는 허용된 외부 네트워크에서 연결할 수 있는 관리 지점입니다. 접근 가능한 소스는 퍼블릭 접근 CIDR에 따라 달라지며, 공개 엔드포인트라도 IAM 인증과 Kubernetes 권한 검사는 계속 적용됩니다.

EKS 제어 플레인은 클러스터 전체를 제어하는 핵심 관리 지점입니다. 불필요하게 넓은 공개 접근은 외부 스캔과 접근 시도를 받을 범위를 늘립니다.

잠재적 영향

  • 제어 플레인 노출: 허용된 외부 소스에서 Kubernetes API 서버에 접근을 시도할 수 있습니다.
  • 공격 표면 확대: 인증 시도와 취약점 탐색 대상이 될 가능성이 커집니다.
  • 운영 통제 약화: 내부 전용 관리 경로 대신 퍼블릭 접근 정책에 의존하게 됩니다.

해결 방법

  • 공개 접근이 필요 없으면 endpoint_private_access = true를 구성하고 endpoint_public_access = false로 전환하세요.
  • 전환 전에 VPC 또는 연결된 관리 네트워크에서 DNS, 라우팅과 보안 그룹을 통해 노드와 관리자가 API에 연결할 수 있는지 확인하세요.
  • 공개 접근이 꼭 필요하다면 CIDR을 승인된 소스로 제한하고 인증 및 권한을 함께 관리하세요.

예시

API 접근 설정의 발췌입니다. 참조한 IAM 역할과 서브넷을 별도로 정의하고 실제 관리 연결을 준비하세요.

변경 전

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

변경 후

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 = false
    endpoint_private_access = true
  }
}

변경 전에는 퍼블릭 API 접근을 허용합니다. 변경 후에는 사설 엔드포인트를 켜고 공개 접근을 끕니다. 필요한 노드 및 관리 연결을 먼저 검증해야 하며, 사설 접근도 적절한 인증과 권한이 필요합니다.

참조