설명
Batch Job Definition의 container_properties.privileged를 true로 설정하면 컨테이너가 호스트에 더 강한 권한으로 접근할 수 있어 일반적인 컨테이너 격리 수준이 약화됩니다. 작업 코드나 이미지가 침해되면 피해 범위가 호스트와 다른 작업으로 확대될 수 있습니다.
privileged 모드는 단순히 컨테이너 안에서 root 사용자로 실행하는 것과 다릅니다. AWS Fargate에서 실행하는 작업에는 이 모드를 사용할 수 없습니다.
잠재적 영향
- 호스트 자원에 대한 과도한 접근으로 작업 간 격리가 약화될 수 있습니다.
- 악성 코드나 이미지의 권한 오용이 더 큰 피해로 이어질 수 있습니다.
해결 방법
container_properties.privileged를 false로 설정하거나 생략하세요. 작업에 필요한 권한만 부여하고 호스트 마운트와 특수 기능 사용을 함께 검토하세요. 새 작업 정의 리비전으로 정상 작업이 실행되는지 시험한 뒤 작업 제출 설정을 갱신하세요.
예시
동일한 EC2 기반 작업 정의에서 privileged 설정을 변경하는 예시입니다.
변경 전
hcl
resource "aws_batch_job_definition" "batch_job" {
name = "tf_test_batch_job_definition"
type = "container"
container_properties = <<CONTAINER_PROPERTIES
{
"command": ["ls", "-la"],
"image": "busybox",
"memory": 1024,
"vcpus": 1,
"privileged": true
}
CONTAINER_PROPERTIES
}
privileged 모드를 사용하도록 설정합니다.
변경 후
hcl
resource "aws_batch_job_definition" "batch_job" {
name = "tf_test_batch_job_definition"
type = "container"
container_properties = <<CONTAINER_PROPERTIES
{
"command": ["ls", "-la"],
"image": "busybox",
"memory": 1024,
"vcpus": 1,
"privileged": false
}
CONTAINER_PROPERTIES
}
privileged 모드를 끕니다. 이 변경만으로 모든 호스트 접근 경로가 제거되는 것은 아니므로 다른 실행 설정도 확인하세요.