권한 상승이 허용된 Kubernetes 컨테이너

실행 파일을 통한 추가 권한 획득을 제한하도록 컨테이너의 권한 상승 설정을 구성하세요.

설명

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를 통한 제한을 적용합니다. 이미 보유한 권한과 다른 보안 설정도 별도로 검토해야 합니다.

참조