설명
CloudFormation의 AWS::Batch::JobDefinition에서 ContainerProperties.Privileged를 활성화하면 컨테이너에 높은 수준의 호스트 권한이 부여되어 작업이 침해되었을 때 영향이 커질 수 있습니다. ReadonlyRootFilesystem: true를 함께 설정해도 특권 모드나 별도로 연결한 쓰기 가능한 호스트 마운트가 해제되지는 않습니다. Fargate 작업에는 특권 모드를 사용할 수 없습니다.
잠재적 영향
- 침해된 작업이 호스트 장치나 자원에 부여된 높은 권한을 악용할 수 있습니다.
- 작업 코드의 문제가 같은 호스트에서 실행되는 다른 작업에도 영향을 줄 수 있습니다.
해결 방법
ContainerProperties.Privileged를false로 설정하거나 생략하세요.- 호스트 마운트, 장치 접근, 작업 역할을 각각 검토하고 실제로 필요한 범위만 허용하세요.
- 변경한 작업 정의의 새 리비전으로 작업을 테스트한 뒤 실제 제출 작업도 해당 리비전을 사용하는지 확인하세요.
예시
아래 예제의 JobRoleArn: String은 자리표시자이므로 유효한 작업 역할 ARN으로 바꾸고, 이미지와 호스트 경로도 실제 환경에 맞게 검토하세요. 두 예제 모두 쓰기 가능한 호스트 마운트를 사용하므로 필요성과 접근 범위를 확인하세요.
변경 전
yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: "BatchJobDefinition"
Resources:
JobDefinition:
Type: AWS::Batch::JobDefinition
Properties:
Type: container
JobDefinitionName: nvidia-smi
ContainerProperties:
MountPoints:
- ReadOnly: false
SourceVolume: nvidia
ContainerPath: /usr/local/nvidia
Volumes:
- Host:
SourcePath: /var/lib/nvidia-docker/volumes/nvidia_driver/latest
Name: nvidia
Command:
- nvidia-smi
Memory: 2000
Privileged: true
JobRoleArn: String
ReadonlyRootFilesystem: true
Vcpus: 2
Image: nvidia/cuda
변경 후
yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: "BatchJobDefinition"
Resources:
JobDefinition:
Type: AWS::Batch::JobDefinition
Properties:
Type: container
JobDefinitionName: nvidia-smi
ContainerProperties:
MountPoints:
- ReadOnly: false
SourceVolume: nvidia
ContainerPath: /usr/local/nvidia
Volumes:
- Host:
SourcePath: /var/lib/nvidia-docker/volumes/nvidia_driver/latest
Name: nvidia
Command:
- nvidia-smi
Memory: 2000
Privileged: false
JobRoleArn: String
ReadonlyRootFilesystem: true
Vcpus: 2
Image: nvidia/cuda
설명:
- 변경 전:
Privileged: true가 높은 수준의 호스트 권한을 부여합니다. 읽기 전용 루트 파일 시스템을 사용해도 이 권한은 제한되지 않습니다. - 변경 후:
Privileged: false로 특권 모드를 비활성화합니다. 남아 있는 호스트 볼륨과 그 쓰기 권한은 별도로 검토해야 합니다.