ポリシーの例 - AWS Batch

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ポリシーの例

以下の例では、ユーザーの AWS Batch に対するアクセス権限を制御するために使用できるポリシーステートメントについて説明しています。

読み取り専用アクセス

次のポリシーでは、名前が Describe および List で始まるすべての AWS Batch API アクションを使用できるアクセス権限をユーザーに付与します。

別のステートメントでアクセス権限を付与されない限り、ユーザーにはそのリソースに対してアクションを実行するアクセス権限がありません。デフォルトでは、API アクションを使用する権限は拒否されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:Describe*", "batch:List*" ], "Resource": "*" } ] }

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" ] } ] }

ジョブ送信時にジョブ定義プレフィックスを制限する

次のポリシーを使用して、JobDefA で始まるすべてのジョブ定義のジョブキューにジョブを送信します。

重要

ジョブ送信へのリソースレベルアクセスに絞り込む場合、ジョブキューおよびジョブ定義の両方のリソースタイプを指定する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:SubmitJob" ], "Resource": [ "arn:aws:batch:<aws_region>:<aws_account_id>:job-definition/JobDefA_*", "arn:aws:batch:<aws_region>:<aws_account_id>:job-queue/*" ] } ] }

ジョブキューへの制限

次のポリシーを使用して、任意のジョブ定義名で queue1 という名前の特定のジョブキューへのジョブの送信をユーザーに許可します。

重要

ジョブ送信へのリソースレベルアクセスに絞り込む場合、ジョブキューおよびジョブ定義の両方のリソースタイプを指定する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:SubmitJob" ], "Resource": [ "arn:aws:batch:<aws_region>:<aws_account_id>:job-definition/*", "arn:aws:batch:<aws_region>:<aws_account_id>:job-queue/queue1" ] } ] }

すべての条件キーが文字列に一致した場合はアクションを拒否する

次のポリシーでは、batch:Image (コンテナイメージ ID) 条件キーが "string1" で、batch:LogDriver (コンテナログドライバー) 条件キーが "string2" の場合、RegisterJobDefinition API オペレーションへのアクセスを拒否します。AWS Batch各コンテナの条件キーを評価します。マルチノードの並列ジョブのように、ジョブが複数のコンテナにまたがる場合、コンテナの構成が異なる可能性があります。1 つのステートメントで複数の条件キーを評価する場合、条件キーは AND ロジックを使用して結合されます。そのため、1 つのコンテナで複数の条件キーのいずれかが一致しない場合、そのコンテナに Deny の効果は適用されません。それどころか、同じジョブ内の別のコンテナが拒否される可能性があります。

AWS Batch の条件キーのリストについては、サービス認可リファレンスのAWS Batch の条件キーを参照してください。この方法は、batch:ShareIdentifier を除くすべての batch 条件キーで使用できます。batch:ShareIdentifier 条件キーは、ジョブ定義ではなく、ジョブに対して定義されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:RegisterJobDefinition" ], "Resource": [ "*" ] }, { "Effect": "Deny", "Action": "batch:RegisterJobDefinition", "Resource": "*", "Condition": { "StringEquals": { "batch:Image": "string1", "batch:LogDriver": "string2" } } } ] }

いずれかの条件キーが文字列に一致した場合はアクションを拒否する

次のポリシーは、batch:Image (コンテナイメージ ID) 条件キーが "string1" または batch:LogDriver (コンテナログドライバー) 条件キーが "string2" の場合、RegisterJobDefinition API オペレーションへのアクセスを拒否します。マルチノードの並列ジョブのように、ジョブが複数のコンテナにまたがる場合、コンテナの構成が異なる可能性があります。1 つのステートメントで複数の条件キーを評価する場合、条件キーは AND ロジックを使用して結合されます。そのため、1 つのコンテナで複数の条件キーのいずれかが一致しない場合、そのコンテナに Deny の効果は適用されません。それどころか、同じジョブ内の別のコンテナが拒否される可能性があります。

AWS Batch の条件キーのリストについては、サービス認可リファレンスのAWS Batch の条件キーを参照してください。この方法は、batch:ShareIdentifier を除くすべての batch 条件キーで使用できます。(batch:ShareIdentifier 条件キーは、ジョブ定義ではなく、ジョブに対して定義されます)。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:RegisterJobDefinition" ], "Resource": [ "*" ] }, { "Effect": "Deny", "Action": [ "batch:RegisterJobDefinition" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "batch:Image": [ "string1" ] } } }, { "Effect": "Deny", "Action": [ "batch:RegisterJobDefinition" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "batch:LogDriver": [ "string2" ] } } } ] }

batch:ShareIdentifier 条件キーを使用する

次のポリシーを使用して、jobDefA ジョブ定義を使用するジョブを lowCpu 配分識別子で jobqueue1 ジョブキューに送信します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:SubmitJob" ], "Resource": [ "arn:aws::batch:<aws_region>:<aws_account_id>:job-definition/JobDefA", "arn:aws::batch:<aws_region>:<aws_account_id>:job-queue/jobqueue1" ], "Condition": { "StringEquals": { "batch:ShareIdentifier": [ "lowCpu" ] } } } ] }