本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例策略
以下示例显示了您可用于控制用户对于 Amazon Batch 权限的策略语句。
只读访问权限
以下策略向用户授予使用名称以 Describe
和 List
开头的所有 Amazon Batch API 操作的权限。
除非另一条语句授予权限,否则用户无权对资源执行任何操作。默认情况下,他们被拒绝使用 API 操作的权限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:Describe*", "batch:List*" ], "Resource": "*" } ] }
示例:限制为 POSIX 用户、Docker 映像、权限级别和作业提交角色
以下策略允许 POSIX 用户管理自己的一组受限作业定义。
第一个语句和第二个语句允许用户注册和取消注册其名称前缀为 JobDefA_
的任何作业定义。
第一个语句还使用条件上下文键来限制作业定义的 containerProperties
中的 POSIX 用户、特权状态和容器映像值。有关更多信息,请参阅 Amazon Batch API 参考中的 RegisterJobDefinition。在此示例中,只有当 POSIX 用户设置为 nobody
时,才能注册作业定义。特权标志设置为 false
。最后,在 Amazon ECR 存储库中将映像设置为 myImage
。
重要
Docker 将 user
参数解析为该用户在容器映像中的 uid
。在大多数情况下,可以在容器映像中的 /etc/passwd
文件中找到它。可以通过在作业定义和任何关联的IAM policy 中使用直接 uid
值来避免此名称解析。Amazon Batch API 和 batch:User
IAM 条件键都支持数字值。
第三个语句限制用户仅将特定角色传递给作业定义。
{ "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
(容器日志驱动程序)条件键为 string string2
时,以下策略拒绝访问 RegisterJobDefinition API 操作。Amazon Batch评估每个容器上的条件键。当作业跨越多个容器(例如多节点平行作业)时,容器可能会有不同的配置。如果在一个语句中评估多个条件键,则使用 AND
逻辑将它们组合在一起。因此,如果多个条件键中的任何一个与容器不匹配,则该 Deny
效果不会应用于该容器。相反,同一作业中的不同容器可能会被拒绝。
有关 Amazon Batch 条件密钥的列表,请参阅《服务授权参考》中的 Amazon 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
(容器日志驱动程序)条件键为 string string2
时,以下策略拒绝访问 RegisterJobDefinition API 操作。当作业跨越多个容器(例如多节点平行作业)时,容器可能会有不同的配置。如果在一个语句中评估多个条件键,则使用 AND
逻辑将它们组合在一起。因此,如果多个条件键中的任何一个与容器不匹配,则该 Deny
效果不会应用于该容器。相反,同一作业中的不同容器可能会被拒绝。
有关 Amazon Batch 条件密钥的列表,请参阅《服务授权参考》中的 Amazon 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" ] } } } ] }