설명
시스템 경로에 연결된 볼륨에 쓰기가 허용되면 실행 파일이나 설정이 변경되어 컨테이너 동작에 영향을 줄 수 있습니다. 볼륨이 호스트 파일 시스템을 연결한다면 노드에도 영향을 줄 수 있습니다.
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라는 경로 자체가 안전성을 보장하지 않으며 실제 소스와 중첩 마운트도 확인해야 합니다.