リソース: POSIX ユーザー、Docker イメージ、特権レベル、ジョブ送信のロールを制限する
次のポリシーは、POSIX ユーザーが自身の制限されたジョブ定義のセットを管理することを許可します。
最初と 2 番目のステートメントを使用して、名前が JobDefA_
で始まるジョブ定義を登録および登録解除します。
また、最初のステートメントでは、条件付きコンテキストキーを使用して POSIX ユーザー、特権ステータス、コンテナイメージ値をジョブ定義の containerProperties
内に制限します。詳細については、AWS Batch API リファレンスの RegisterJobDefinition を参照してください。この例では、POSIX ユーザーが nobody
に設定されている場合にのみ、ジョブ定義を登録できます。特権フラグは false
に設定されています。最後に、イメージは Amazon ECR レポジトリの myImage
に設定されています。
重要
Docker は、コンテナイメージ内から user
パラメータをユーザー uid
に解決します。ほとんどの場合、これはコンテナイメージ内の /etc/passwd
ファイルにあります。ジョブ定義と関連付けられたすべての IAM ポリシーの両方で直接 uid
値を使用することで、この名前解決を回避できます。AWS Batch API オペレーションおよび batch:User
IAM 条件キーのいずれにおいても、数値がサポートされます。
3 番目のステートメントを使用して、ジョブ定義を特定のロールのみに制限します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:RegisterJobDefinition" ], "Resource": [ "arn:aws:batch:
<aws_region>
:<aws_account_id>
:job-definition/JobDefA_*" ], "Condition": { "StringEquals": { "batch:User": [ "nobody" ], "batch:Image": [ "<aws_account_id>
.dkr.ecr.<aws_region>
.amazonaws.com/myImage" ] }, "Bool": { "batch:Privileged": "false" } } }, { "Effect": "Allow", "Action": [ "batch:DeregisterJobDefinition" ], "Resource": [ "arn:aws:batch:<aws_region>
:<aws_account_id>
:job-definition/JobDefA_*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<aws_account_id>
:role/MyBatchJobRole" ] } ] }