민감한 호스트 디렉터리를 사용하는 Kubernetes 워크로드

민감한 호스트 디렉터리의 마운트를 제한해 노드 정보와 파일을 보호하세요.

설명

hostPath로 호스트의 로그, 설정이나 시스템 디렉터리를 컨테이너에 연결하면 노드 내부 정보와 파일에 접근할 수 있습니다. 실제 접근 범위는 마운트 연결, 파일 권한과 다른 보안 설정에 달려 있습니다.

운영상 필요한 수집기와 일반 애플리케이션의 요구를 구분하고, 필요한 경우에도 호스트 전체나 넓은 상위 경로를 제공하지 마세요.

잠재적 영향

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

해결 방법

  • 불필요한 민감 경로의 host_path를 제거하세요. 설정은 ConfigMap·Secret으로, 애플리케이션 데이터는 적절한 CSI·관리형 스토리지로 제공하세요.
  • PVC도 실제 볼륨이 hostPath라면 같은 위험이 남으므로 저장소의 실제 소스를 확인하세요.
  • 필수 마운트는 최소 경로와 읽기 전용으로 제한하세요. 읽기 전용이어도 정보 노출은 가능하므로 접근 주체와 워크로드 변경 권한도 제한하세요.

예시

호스트 볼륨 선언을 비교하는 부분 예시입니다. 첫 예시는 볼륨 이름과 컨테이너의 마운트 연결이 생략되어 있습니다. 배포에는 완전한 설정과 지원되는 이미지가 필요합니다.

변경 전

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

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

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

노드의 /var/log를 볼륨 소스로 선언합니다. 이 선언만으로 컨테이너에 마운트가 연결되는 것은 아닙니다.

변경 후

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

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

hostPath 선언을 제거했습니다. 다른 볼륨이나 권한으로 민감한 호스트 파일에 접근할 수 없는지도 확인하세요.

참조