설명
NET_RAW는 raw socket과 packet socket 같은 네트워크 기능을 허용하는 Linux capability입니다. 필요한 제한이 없고 컨테이너가 이 권한을 실제로 보유하면 침해된 프로세스가 악용할 수 있습니다. 정책에서 제거를 요구하지 않는다고 모든 컨테이너에 NET_RAW가 추가되는 것은 아닙니다.
PodSecurityPolicy는 Kubernetes 1.25에서 제거되었습니다. 현재 클러스터에는 Pod Security Admission이나 정책 엔진으로 필요한 제한을 적용하세요.
잠재적 영향
- 불필요한 패킷 생성·조작 기능이 네트워크 공격에 이용될 수 있습니다.
- 필요한 capability까지 제거하면 애플리케이션의 정상 기능이 중단될 수 있습니다.
해결 방법
- 호환되는 워크로드는 capability를 모두 제거한 뒤 필요한 권한만 허용하고, 최소한 불필요한 NET_RAW는 제거하세요. 실제 런타임 권한과 정상 동작을 확인하세요.
- 현재의 admission 정책으로 요구사항을 강제하세요. 레거시 PSP의 required_drop_capabilities 예제를 현재 클러스터의 정책으로 그대로 사용하지 마세요.
예시
제거된 PSP의 일부 설정만 보여 주는 레거시 발췌입니다. 전체 정책의 다른 필수 속성과 적용 권한은 생략했으며, 변경 후 ALL은 NET_RAW뿐 아니라 다른 capability도 제거하도록 요구합니다.
변경 전
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
required_drop_capabilities = [
"KILL",
"SYS_TIME",
]
}
}
변경 후
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
required_drop_capabilities = [
"ALL",
]
}
}
설명:
- 변경 전: KILL과 SYS_TIME 제거를 요구하지만 NET_RAW 제거는 명시하지 않습니다.
- 변경 후: 모든 capability 제거를 요구합니다. 애플리케이션이 이 제한에서 동작하는지 확인해야 합니다.