일반 Kubernetes 워크로드의 hostPath 사용 점검

일반 워크로드의 hostPath 사용을 제한해 노드 파일 시스템 접근을 줄이세요.

설명

hostPath는 노드 파일 시스템의 일부를 컨테이너에 연결합니다. 실제 마운트와 파일 권한에 따라 애플리케이션이 호스트 파일을 읽거나 변경할 수 있어 노드와 컨테이너 사이의 경계가 약해집니다.

특별한 운영 목적이 아닌 일반 워크로드에서는 사용을 피하세요. Pod를 kube-system으로 옮기는 것만으로 호스트 접근이 안전해지지는 않습니다.

잠재적 영향

  • 호스트 로그나 설정에 포함된 민감 정보가 노출될 수 있습니다.
  • 쓰기 권한까지 허용되면 노드 파일이나 다른 워크로드에 영향을 줄 수 있습니다.

해결 방법

  • 불필요한 hostPath 마운트를 제거하고 적절한 CSI·관리형 스토리지로 대체하세요. PVC를 사용하더라도 실제 볼륨이 hostPath인지 확인하세요.
  • 호스트 접근이 필수라면 최소 경로와 읽기 전용 권한으로 제한하고 별도 노드 격리를 검토하세요.
  • 워크로드를 만들거나 변경하는 권한도 제한해 호스트 접근 범위가 다시 넓어지지 않도록 하세요.

예시

hostPath 선언을 비교하는 부분 예시입니다. 첫 예시는 볼륨 이름과 컨테이너의 마운트 연결 등이 생략되어 있어 그대로 배포할 수 없습니다. 이미지 버전도 실제 배포에는 지원되는 값으로 바꾸세요.

변경 전

hcl
resource "kubernetes_pod" "app_pod" {
  metadata {
    name      = "terraform-example"
    namespace = "default"
  }

  spec {
    volume {
      host_path {
        path = "/var/log"
      }
    }
  }
}

노드의 /var/log를 볼륨 소스로 선언합니다. 컨테이너에서 사용하려면 해당 볼륨을 연결하는 마운트 구성이 추가로 필요합니다.

변경 후

hcl
resource "kubernetes_pod" "app_pod" {
  metadata {
    name      = "terraform-example"
    namespace = "default"
  }

  spec {
    container {
      image = "nginx:1.7.9"
      name  = "app-container"
    }
  }
}

hostPath 선언을 제거했습니다. 다른 볼륨과 권한에서도 호스트 접근이 남아 있는지 확인하세요.

참조