示例策略 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

示例策略

以下示例显示了您可用于控制用户对于 Amazon Batch 权限的策略语句。

只读访问权限

以下策略向用户授予使用名称以 DescribeList 开头的所有 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)条件键为 string1batch: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)条件键为 string1batch: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" ] } } } ] }