설명
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 선언을 제거했습니다. 다른 볼륨이나 권한으로 민감한 호스트 파일에 접근할 수 없는지도 확인하세요.