설명
NET_RAW는 raw socket과 packet socket 같은 네트워크 기능을 허용하는 Linux capability입니다. 일반 애플리케이션에는 필요하지 않은 경우가 많으며, 불필요하게 남아 있으면 침해된 프로세스가 악용할 수 있습니다. 실제 보유 여부는 런타임 기본값과 추가·제거 설정을 함께 확인해야 합니다.
잠재적 영향
- 불필요한 패킷 생성·조작 등 네트워크 기능이 악용될 수 있습니다.
- 과도한 capability 제거는 필요한 애플리케이션 기능에 영향을 줄 수 있습니다.
해결 방법
- 필요하지 않은
NET_RAW를security_context.capabilities.drop에 추가하세요. 더 엄격한 최소 권한 구성이 가능하면ALL을 제거하고 필요한 권한만 다시 허용하는 방식을 검토하세요. - 다시 추가되는 capability와 특권 모드를 함께 확인하고 실제 애플리케이션 동작을 시험하세요. Pod Security Admission이나 정책 엔진으로 필요한 기준을 적용하세요.
예시
기존 nginx 예제에서 NET_RAW 제거만 비교합니다. 모든 capability를 제거하면 사용자 전환이나 포트·파일 작업도 영향을 받을 수 있으므로 ALL 적용에는 별도 호환성 검증이 필요합니다. 실제 배포에는 유지보수되는 이미지를 사용하세요.
변경 전
hcl
resource "kubernetes_pod" "pod" {
metadata {
name = "terraform-example"
}
spec {
container {
image = "nginx:1.7.9"
name = "example"
security_context {
capabilities {}
}
}
}
}
변경 후
hcl
resource "kubernetes_pod" "pod" {
metadata {
name = "terraform-example"
}
spec {
container {
image = "nginx:1.7.9"
name = "example"
security_context {
capabilities {
drop = ["NET_RAW"]
}
}
}
}
}
설명:
- 변경 전: 명시적인 capability 제거가 없습니다. 실제 기본 권한을 확인해야 합니다.
- 변경 후: NET_RAW를 제거합니다. 다른 기본 capability까지 모두 제거하는 설정은 아닙니다.