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