특권 모드가 활성화된 AWS Batch 작업 정의

CloudFormation의 AWS Batch 작업 정의에서 특권 모드를 확인하고 작업에 불필요한 호스트 권한을 줄입니다.

설명

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로 특권 모드를 비활성화합니다. 남아 있는 호스트 볼륨과 그 쓰기 권한은 별도로 검토해야 합니다.

참조