특권 모드를 사용하는 AWS Batch 작업 정의

Ansible로 정의한 AWS Batch 작업의 특권 모드를 확인하고 불필요한 호스트 권한을 제거합니다.

설명

Ansible로 정의한 AWS Batch 작업에서 privileged: true를 사용하면 컨테이너에 높은 수준의 호스트 권한이 부여되어 격리 경계가 약해질 수 있습니다. 컨테이너 안에서 루트 사용자로 실행하는 것과는 별개의 설정이므로, 작업에 필요한지 확인하지 않은 채 활성화하지 마세요. AWS Batch의 Fargate 작업에는 특권 모드를 사용할 수 없습니다.

잠재적 영향

  • 작업 코드가 침해되면 컨테이너에 부여된 호스트 권한이 악용될 수 있습니다.
  • 호스트의 장치나 자원에 대한 접근이 늘어나 같은 호스트의 다른 작업에도 영향이 미칠 수 있습니다.

해결 방법

  • privileged를 false로 설정하거나 생략하고 작업이 정상적으로 실행되는지 테스트하세요.
  • 특권 모드가 필요하다고 판단했다면 필요한 호스트 접근을 구체적으로 확인하고, 지원되는 더 제한적인 실행 방식이 있는지 검토하세요.
  • 컨테이너 이미지, 작업 역할, 호스트 장치와 볼륨 접근도 따로 점검하세요. 특권 모드를 끄는 것만으로 모든 권한이나 마운트가 제한되지는 않습니다.

예시

아래 예제는 이전 모듈 이름을 사용합니다. 사용하는 Ansible 컬렉션 버전에서 지원하는 모듈 이름과 매개변수를 확인하고, 이미지와 역할 ARN의 자리표시자는 실제 값으로 바꾸세요.

변경 전

yaml
- name: My Batch Job Definition
  community.aws.aws_batch_job_definition:
    job_definition_name: My Batch Job Definition
    state: present
    type: container
    parameters:
      Param1: Val1
      Param2: Val2
    privileged: true
    image: <Docker Image URL>
    vcpus: 1
    memory: 512
    command:
      - python
      - run_my_script.py
      - arg1
    job_role_arn: <Job Role ARN>
    attempts: 3
  register: job_definition_create_result

변경 후

yaml
- name: My Batch Job Definition
  community.aws.aws_batch_job_definition:
    job_definition_name: My Batch Job Definition without privilege
    state: present
    type: container
    parameters:
      Param1: Val1
      Param2: Val2
    privileged: false
    image: <Docker Image URL>
    vcpus: 1
    memory: 512
    command:
      - python
      - run_my_script.py
      - arg1
    job_role_arn: <Job Role ARN>
    attempts: 3
  register: job_definition_create_result

설명:

  • 변경 전: privileged: true가 컨테이너에 높은 수준의 호스트 권한을 부여합니다.
  • 변경 후: privileged: false로 이 설정을 비활성화합니다. 필요한 장치 접근이나 작업 동작이 유지되는지는 별도로 테스트해야 합니다.

참조