컨테이너 NET_RAW 권한 제거 설정 점검

raw socket이 필요하지 않은 컨테이너에서 NET_RAW를 제거하세요.

설명

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까지 모두 제거하는 설정은 아닙니다.

참조