접근 보안 그룹이 없는 EKS 노드 원격 접근

AWS EKS 노드 그룹에 원격 접근을 허용한다면 접근 가능한 보안 그룹도 함께 제한해야 합니다.

설명

EKS 관리형 노드 그룹을 만들 때 EC2 SSH 키를 지정하고 소스 보안 그룹을 지정하지 않으면, 관리 포트가 0.0.0.0/0에 열립니다. Linux에서는 SSH 포트 22, Windows에서는 RDP 포트 3389가 해당합니다. 실제 연결 가능성은 주소와 라우팅 등 다른 네트워크 구성에도 달려 있습니다.

원격 접근 자체가 항상 위험한 것은 아니지만 허용 범위는 명확해야 합니다.

잠재적 영향

  • 관리 포트 노출 증가: 노드의 원격 접근 범위가 불필요하게 넓어질 수 있습니다.
  • 운영 접근 통제 약화: 승인된 관리 호스트만 허용하는 구조를 유지하기 어렵습니다.
  • 공격 표면 확대: 외부에서 도달할 수 있는 노드가 인증 시도와 취약점 탐색에 노출될 수 있습니다.

해결 방법

  • remote_access.source_security_group_ids에 승인된 관리 호스트가 사용하는 보안 그룹 ID를 지정하세요.
  • 원격 접근이 필요하지 않다면 제거를 검토하세요.
  • Bastion이나 SSM Session Manager 같은 대체 경로는 필요한 IAM 권한과 네트워크 연결을 함께 구성하고, 변경 계획에 노드 교체가 포함되는지 확인하세요.

예시

원격 접근 설정의 발췌입니다. 참조 리소스, 노드 크기 조정 설정과 기존 EC2 키 페어를 별도로 준비하세요. 변경 후의 management 보안 그룹은 승인된 관리 호스트에 연결된 그룹이어야 합니다.

변경 전

hcl
resource "aws_eks_node_group" "example" {
  cluster_name    = aws_eks_cluster.example.name
  node_group_name = "example"
  node_role_arn   = aws_iam_role.example.arn
  subnet_ids      = aws_subnet.example[*].id

  remote_access {
    ec2_ssh_key = "my-rsa-key"
  }
}

변경 후

hcl
resource "aws_eks_node_group" "example" {
  cluster_name    = aws_eks_cluster.example.name
  node_group_name = "example"
  node_role_arn   = aws_iam_role.example.arn
  subnet_ids      = aws_subnet.example[*].id

  remote_access {
    ec2_ssh_key                = "my-rsa-key"
    source_security_group_ids = [aws_security_group.management.id]
  }
}

변경 전에는 키만 지정해 관리 포트의 소스를 제한하지 않습니다. 변경 후에는 관리 호스트의 보안 그룹 ID 목록을 지정합니다. 실제 호스트 연결과 다른 보안 그룹 규칙도 함께 확인하세요.

참조