설명
Privileged 컨테이너는 광범위한 권한을 얻고 기본적인 컨테이너 격리 장치가 약해집니다. 일반 애플리케이션은 필요한 최소 권한만 사용해야 하며 init 컨테이너도 같은 기준으로 검토해야 합니다.
Privileged 모드는 단순히 UID 0으로 실행하는 것과 다릅니다. 실제 노드에 미치는 영향은 장치 접근, 마운트와 다른 보안 설정에도 달려 있습니다.
잠재적 영향
- 컨테이너 침해가 노드 자원과 다른 워크로드에 영향을 줄 수 있습니다.
- 과도한 장치·커널 접근 권한이 악용될 수 있습니다.
해결 방법
- 컨테이너의
security_context블록에서privileged = false로 설정하세요. - 특권이 필요한 워크로드는 필요한 기능과 범위를 줄이고 별도 노드와 정책으로 격리하세요.
- capabilities, hostPath와 호스트 네임스페이스 공유도 함께 점검하세요.
예시
Privileged 설정을 비교합니다. 이미지 버전은 기존 예시 값이므로 배포할 때는 지원되는 이미지를 선택하세요.
변경 전
hcl
resource "kubernetes_pod" "app_pod" {
metadata {
name = "terraform-example"
}
spec {
container {
image = "nginx:1.7.9"
name = "app-container"
security_context {
privileged = true
}
}
}
}
컨테이너가 privileged 모드로 실행되어 격리가 약해집니다.
변경 후
hcl
resource "kubernetes_pod" "app_pod" {
metadata {
name = "terraform-example"
}
spec {
container {
image = "nginx:1.7.9"
name = "app-container"
security_context {
privileged = false
}
}
}
}
Privileged 모드를 해제했습니다. 다른 권한과 호스트 접근 설정도 함께 제한해야 합니다.