Pod·컨테이너 Security Context 점검

실제 실행 권한을 확인하고 필요한 보안 컨텍스트를 적용하세요.

설명

Pod와 컨테이너의 security_context는 실행 사용자, 권한 상승, 파일 시스템 및 capability 제한을 설정하는 제어점입니다. 필요한 제한을 정하지 않고 환경 기본값에만 의존하면 워크로드의 실행 권한이 의도보다 넓어질 수 있습니다.

명시적인 블록이 없더라도 이미지, 런타임, 상위 Pod 설정이나 입장 정책이 적용될 수 있습니다. 블록의 존재만 확인하지 말고 실제 적용된 값을 검토하세요.

잠재적 영향

  • 컨테이너가 필요한 범위보다 큰 권한으로 실행될 수 있습니다.
  • 환경마다 다른 기본값 때문에 보안 기준이 일관되지 않을 수 있습니다.

해결 방법

  • 지원되는 위치에 security_context를 설정하고 비루트 실행, 최소 capability, 읽기 전용 루트 파일 시스템 등 워크로드에 필요한 제한을 적용하세요.
  • run_as_non_root는 Pod 또는 컨테이너에서, allow_privilege_escalation은 컨테이너에서 설정하세요. 공유 필드의 컨테이너 설정은 Pod 설정을 덮어쓸 수 있으므로 최종 값을 확인하세요.
  • 이미지의 실행 사용자와 파일·포트 권한을 맞추고 정상 시작과 동작을 시험하세요.

예시

변경 후 var.non_root_image에는 0이 아닌 숫자형 USER로 실행되고 해당 파일·포트 권한에 맞는 유지보수 이미지를 지정하세요. 기존 nginx:1.7.9는 기본 루트 실행과 오래된 버전 때문에 변경 후 보호 설정의 실행 이미지로 적합하지 않습니다.

변경 전

hcl
resource "kubernetes_pod" "example" {
  metadata {
    name = "terraform-example"
  }

  spec {
    container {
      image = "nginx:1.7.9"
      name  = "example"
    }
  }
}

변경 후

hcl
resource "kubernetes_pod" "example" {
  metadata {
    name = "terraform-example"
  }

  spec {
    security_context {
      run_as_non_root = true
    }

    container {
      image = var.non_root_image
      name  = "example"

      security_context {
        allow_privilege_escalation = false
      }
    }
  }
}

설명:

  • 변경 전: 명시적인 보안 컨텍스트가 없습니다. 실제 권한은 이미지와 적용된 정책도 확인해야 합니다.
  • 변경 후: Pod에서 비루트 실행을 요구하고 컨테이너의 권한 상승을 제한합니다. 호환되는 이미지를 별도로 제공해야 합니다.

참조