정책의 NET_RAW 권한 제거 요구사항 점검

raw socket이 불필요한 워크로드에 NET_RAW 제거를 요구하세요.

설명

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 제거를 요구합니다. 애플리케이션이 이 제한에서 동작하는지 확인해야 합니다.

참조