特権モードを使用する AWS Batch ジョブ定義

Ansible で定義した AWS Batch ジョブの特権モードを確認し、不要なホスト権限を削除します。

説明

Ansible で定義した AWS Batch ジョブに privileged: true を設定すると、コンテナーがホストに対して強い権限を持ち、分離が弱まる可能性があります。コンテナー内で root ユーザーとして実行することとは別の設定なので、ワークロードに必要であることを確認してから有効にしてください。Fargate 上の AWS Batch ジョブでは、特権モードを使用できません。

想定される影響

  • ジョブのコードが侵害されると、コンテナーに与えられたホスト権限を悪用される可能性があります。
  • ホストのデバイスやリソースへのアクセスが増え、同じホスト上のほかのジョブに影響が及ぶおそれがあります。

対処方法

  • 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 でこの設定を無効にしています。必要なデバイスアクセスやジョブの動作が維持されるかは、別途テストが必要です。

参考資料