示例:使用作业标签控制权限 S3 批量操作 - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

示例:使用作业标签控制权限 S3 批量操作

帮助您管理 S3 批量操作 职位,您可以添加 工作标签. 借助作业标签,您可以控制对批量操作作业的访问,并强制在创建任何作业时应用标签。

您最多可以为每个 批量操作作业应用 50 个作业标签。这允许您设置非常精细的策略,限制可编辑作业的用户集。作业标签可授予或限制用户取消作业、激活处于确认状态的作业或更改作业优先级的能力。此外,您可以强制将标签应用于所有新作业,并为标签指定允许的键值对。您可以使用相同的方法表达所有这些条件 IAM政策语言. 有关更多信息,请参阅 的操作、资源和条件键Amazon S3.

以下示例显示如何使用 S3 批量操作 作业标签授予用户权限,仅创建和编辑在特定的工作中运行的作业 部门 (例如, 财务合规 部门)。您也可以根据阶段的基于 开发 与他们相关,例如 质量保生产.

在本示例中,您使用 S3 批量操作 工作标记 AWS Identity and Access Management (IAM)政策授予用户创建和编辑其部门内运行的职位的权限。您根据他们与其相关的开发阶段分配职位,例如 质量保生产.

此示例使用以下部门,每个部门使用 批量操作的方式不同:

  • 财务

  • 合规性

  • 商业智能

  • 工程

通过向用户和资源分配标签来控制访问

在此情境中,管理员正在使用 基于属性的访问控制(ABAC). ABAC是 IAM 授权策略,通过将标签连接到两个方法来定义权限 IAM 用户和AWS资源。

为用户和作业分配以下部门标签之一:

Key Value

  • department : Finance

  • department : Compliance

  • department : BusinessIntelligence

  • department : Engineering

    注意

    作业标签键和值区分大小写。

使用ABAC访问控制策略,您授予财务部门的用户创建和管理权限 S3 批量操作 与标签相关的部门内的职位 department=Finance 他们的 IAM 用户。

此外,您可以将管理的策略附加到 IAM 允许公司中任何用户创建或修改的用户 S3 批量操作 各自部门内的职位。

此示例中的策略包括三个策略语句:

  • 策略中的第一个语句允许用户创建批量操作作业,前提是作业创建请求包含与其各自部门匹配的作业标签。这使用 "${aws:PrincipalTag/department}" 语法表示,该语法在策略评估时被 IAM 用户的部门标签所取代。当在请求 ("aws:RequestTag/department") 中为部门标签提供的值与用户的部门匹配时,该条件将得到满足。

  • 策略中的第二个语句允许用户更改作业的优先级或更新作业的状态,前提是用户正在更新的作业与用户的部门匹配。

  • 第三个声明允许用户更新 批量操作 任何时候的工作标签 PutJobTagging 请求只要(1)其部门标签被保存,(2)他们正在更新的工作在其部门内。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:CreateJob", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/department": "${aws:PrincipalTag/department}" } } }, { "Effect": "Allow", "Action": [ "s3:UpdateJobPriority", "s3:UpdateJobStatus" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/department": "${aws:PrincipalTag/department}" } } }, { "Effect": "Allow", "Action": "s3:PutJobTagging", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/department": "${aws:PrincipalTag/department}", "aws:ResourceTag/department": "${aws:PrincipalTag/department}" } } } ] }

按阶段标记批量操作作业并对作业优先级实施限制

全部 S3 批量操作 工作具有数字优先级,这些优先级 Amazon S3 用于决定运行工作的顺序。对于此示例,您可以限制大多数用户可以分配给作业的最大优先级,并为有限的特权用户集保留更高的优先级范围,如下所示:

  • QA阶段优先级范围(低): [1, 100]

  • 生产阶段优先级范围(高): 1-300

为此,介绍一个新的标签集 阶段 作业:

Key Value

  • stage : QA

  • stage : Production

在部门内创建和更新低优先级作业

除了基于部门的限制外,此策略还对 S3 批量操作作业创建和更新引入了两个新的限制:

  • 它允许用户在其部门中创建或更新作业,而一个新条件要求作业包含标签 stage=QA.

  • 它允许用户创建或更新作业的优先级,新的最大优先级为 100。

{         "Version": "2012-10-17",         "Statement": [         {         "Effect": "Allow",         "Action": "s3:CreateJob",         "Resource": "*",         "Condition": {             "StringEquals": {                 "aws:RequestTag/department": "${aws:PrincipalTag/department}",                 "aws:RequestTag/stage": "QA"             },             "NumericLessThanEquals": {                 "s3:RequestJobPriority": 100             }         }     },     {         "Effect": "Allow",         "Action": [             "s3:UpdateJobStatus"         ],         "Resource": "*",         "Condition": {             "StringEquals": {                 "aws:ResourceTag/department": "${aws:PrincipalTag/department}"             }         }     },     {         "Effect": "Allow",         "Action": "s3:UpdateJobPriority",         "Resource": "*",         "Condition": {             "StringEquals": {                 "aws:ResourceTag/department": "${aws:PrincipalTag/department}",                 "aws:ResourceTag/stage": "QA"             },             "NumericLessThanEquals": {                 "s3:RequestJobPriority": 100             }         }     },     {         "Effect": "Allow",         "Action": "s3:PutJobTagging",         "Resource": "*",         "Condition": {             "StringEquals": {                 "aws:RequestTag/department" : "${aws:PrincipalTag/department}",                 "aws:ResourceTag/department": "${aws:PrincipalTag/department}",                 "aws:RequestTag/stage": "QA",                 "aws:ResourceTag/stage": "QA"             }         }     },     {         "Effect": "Allow",         "Action": "s3:GetJobTagging",         "Resource": "*"     }     ] }

在部门内创建和更新高优先级作业

许多用户可能需要在任意一个中创建高优先级工作 质量保生产. 为了满足这一需求,您可以创建一个根据上一节中的低优先级策略改写的托管策略。

该策略执行以下操作:

  • 允许用户使用标签创建或更新其部门中的职位 stage=QAstage=Production.

  • 允许用户创建或更新作业的优先级,最高为 300。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:CreateJob", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:RequestTag/stage": [ "QA", "Production" ] }, "StringEquals": { "aws:RequestTag/department": "${aws:PrincipalTag/department}" }, "NumericLessThanEquals": { "s3:RequestJobPriority": 300 } } }, { "Effect": "Allow", "Action": [ "s3:UpdateJobStatus" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/department": "${aws:PrincipalTag/department}" } } }, { "Effect": "Allow", "Action": "s3:UpdateJobPriority", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:ResourceTag/stage": [ "QA", "Production" ] }, "StringEquals": { "aws:ResourceTag/department": "${aws:PrincipalTag/department}" }, "NumericLessThanEquals": { "s3:RequestJobPriority": 300 } } }, { "Effect": "Allow", "Action": "s3:PutJobTagging", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/department": "${aws:PrincipalTag/department}", "aws:ResourceTag/department": "${aws:PrincipalTag/department}" }, "ForAnyValue:StringEquals": { "aws:RequestTag/stage": [ "QA", "Production" ], "aws:ResourceTag/stage": [ "QA", "Production" ] } } } ] }