privileged コンテナーを有効にした AWS Batch ジョブ定義

AWS Batch ジョブに不要な privileged 権限を付与しないでください。

説明

Batch ジョブ定義で container_properties.privileged を true にすると、コンテナーがホストにより広くアクセスでき、通常のコンテナー隔離が弱まります。ジョブのコードやイメージが侵害されると、ホストや他のジョブに影響が及ぶおそれがあります。

privileged モードは、コンテナー内で root ユーザーとして実行するだけの場合とは異なります。AWS Fargate で実行するジョブでは使用できません。

想定される影響

  • ホストリソースへの過剰なアクセスで、ジョブ間の隔離が弱まる可能性があります。
  • 悪意のあるコードやイメージによる権限の悪用で、被害が拡大するおそれがあります。

対処方法

container_properties.privileged を false に設定するか省略してください。ジョブに必要な権限だけを付与し、ホストのマウントや特殊な機能の使用も確認してください。新しいジョブ定義リビジョンで正常に実行できることを試験してから、ジョブの送信設定を更新してください。

例

同じ EC2 ベースのジョブ定義で privileged 設定を変更する例です。

変更前

hcl
resource "aws_batch_job_definition" "batch_job" {
  name = "tf_test_batch_job_definition"
  type = "container"

  container_properties = <<CONTAINER_PROPERTIES
{
    "command": ["ls", "-la"],
    "image": "busybox",
    "memory": 1024,
    "vcpus": 1,
    "privileged": true
}
CONTAINER_PROPERTIES
}

privileged モードを有効にしています。

変更後

hcl
resource "aws_batch_job_definition" "batch_job" {
  name = "tf_test_batch_job_definition"
  type = "container"

  container_properties = <<CONTAINER_PROPERTIES
{
    "command": ["ls", "-la"],
    "image": "busybox",
    "memory": 1024,
    "vcpus": 1,
    "privileged": false
}
CONTAINER_PROPERTIES
}

privileged モードを無効にします。この変更だけでホストへのすべてのアクセス経路がなくなるわけではないため、他の実行設定も確認してください。

参考資料