설명
allow_privilege_escalation은 프로세스가 실행 파일을 통해 부모보다 더 높은 권한을 얻는 경로를 제어합니다. false로 설정하면 Linux의 no_new_privs를 사용해 setuid나 파일 capabilities를 통한 새로운 권한 획득을 제한합니다.
이 설정은 이미 가진 권한을 제거하거나 모든 커널 취약점을 막는 기능은 아닙니다. Privileged 컨테이너이거나 SYS_ADMIN을 가진 경우에는 이 제한을 기대할 수 없으므로 해당 권한도 제거해야 합니다.
잠재적 영향
- 사용 가능한 특권 실행 파일이 있으면 프로세스가 의도하지 않은 추가 권한을 얻을 수 있습니다.
- 애플리케이션 침해가 컨테이너 안에서 더 큰 영향으로 이어질 수 있습니다.
해결 방법
security_context블록에서allow_privilege_escalation = false로 설정하세요.- privileged와 불필요한 capabilities를 제거하고 실행 사용자도 최소 권한으로 제한하세요.
- 공통 Pod 템플릿과 Helm 차트에도 적용하고 필요한 실행 파일이 정상 동작하는지 확인하세요.
예시
권한 상승 설정을 비교합니다. 이미지 버전은 기존 예시 값이므로 실제 배포에는 지원되는 이미지를 사용하세요.
변경 전
hcl
resource "kubernetes_pod" "app_pod" {
metadata {
name = "terraform-example"
}
spec {
container {
image = "nginx:1.7.9"
name = "app-container"
security_context {
allow_privilege_escalation = true
}
}
}
}
실행 파일을 통한 추가 권한 획득을 이 설정으로 제한하지 않습니다. 실제 획득 가능성은 실행 파일과 다른 보안 통제에 달려 있습니다.
변경 후
hcl
resource "kubernetes_pod" "app_pod" {
metadata {
name = "terraform-example"
}
spec {
container {
image = "nginx:1.7.9"
name = "app-container"
security_context {
allow_privilege_escalation = false
}
}
}
}
no_new_privs를 통한 제한을 적용합니다. 이미 보유한 권한과 다른 보안 설정도 별도로 검토해야 합니다.