Kubernetes OS 디렉터리 마운트 보호 점검

OS 디렉터리의 볼륨 소스와 쓰기 제한을 확인해 불필요한 파일 변경을 막으세요.

설명

시스템 경로에 연결된 볼륨에 쓰기가 허용되면 실행 파일이나 설정이 변경되어 컨테이너 동작에 영향을 줄 수 있습니다. 볼륨이 호스트 파일 시스템을 연결한다면 노드에도 영향을 줄 수 있습니다.

mount_path는 컨테이너 안의 경로입니다. /bin 같은 경로만으로 호스트 디렉터리를 마운트했다고 판단할 수는 없으므로 대응하는 볼륨 소스와 실제 파일 권한을 함께 확인하세요.

잠재적 영향

  • 쓰기 가능한 시스템 파일이나 설정이 변조되어 애플리케이션이 오작동할 수 있습니다.
  • 호스트 파일을 공유하는 경우 노드와 다른 워크로드에도 영향이 미칠 수 있습니다.

해결 방법

  • 불필요한 시스템 경로 마운트를 제거하고 필요한 데이터만 최소 경로로 제공하세요.
  • 쓰기가 필요하지 않으면 read_only = true를 설정하세요. 중첩 마운트나 다른 접근 경로까지 모두 보호되는지는 별도로 확인하세요.
  • 볼륨 소스, 파일 권한, privileged와 capabilities도 함께 검토하세요.

예시

볼륨 마운트의 부분 예시입니다. 대응하는 볼륨 정의가 생략되어 있어 실제 소스는 알 수 없으며 그대로 배포할 수 없습니다. 이미지 버전은 실제 배포에 맞는 지원 버전으로 바꾸세요.

변경 전

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

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

      volume_mount {
        name       = "system-bin"
        mount_path = "/bin"
      }
    }
  }
}

컨테이너의 /bin에 볼륨을 연결하면서 읽기 전용을 요청하지 않습니다. 파일 변경 가능성과 호스트 영향은 볼륨 소스와 권한에 달려 있습니다.

변경 후

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

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

      volume_mount {
        name       = "config-volume"
        mount_path = "/etc/config"
        read_only  = true
      }
    }
  }
}

설정 볼륨을 읽기 전용으로 요청합니다. /etc/config라는 경로 자체가 안전성을 보장하지 않으며 실제 소스와 중첩 마운트도 확인해야 합니다.

참조