在创建时授予标记资源的权限 - Amazon Elastic Container Service

在创建时授予标记资源的权限

以下标签创建 Amazon ECS API 操作允许您在创建资源时指定标签。如果在资源创建操作中指定了标签,则 AWS 会执行额外的授权,以验证是否分配了正确的权限以创建标签。

  • CreateCapacityProvider

  • CreateCluster

  • CreateService

  • CreateTaskSet

  • RegisterContainerInstance

  • RegisterTaskDefinition

  • RunTask

  • StartTask

您可以使用资源标签来实现基于属性的控制 (ABAC)。有关更多信息,请参阅使用资源标签控制对 Amazon ECS 资源的访问为 Amazon ECS 资源添加标签

为允许在创建时添加标签,请创建或修改策略,以包含使用创建该资源的操作(如 ecs:CreateClusterecs:RunTaskecs:TagResource)的权限。

以下示例演示了一个策略,该策略使用户能够创建集群和在集群创建过程中添加标签。用户无权标记任何现有资源 (他们无法直接调用 ecs:TagResource 操作)。

{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateCluster" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecs:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "ecs:CreateAction": [ "CreateCluster", "CreateCapacityProvider", "CreateService", "CreateTaskSet", "RegisterContainerInstance", "RegisterTaskDefinition", "RunTask", "StartTask" ] } } } ] }

仅当用户在资源创建操作中应用了标签时,系统才会评估 ecs:TagResource 操作。因此,如果未在此请求中指定任何标签,则拥有创建资源权限 (假定没有标记条件) 的用户无需具备使用 ecs:TagResource 操作的权限。但是,如果用户不具备使用 ecs:TagResource 操作的权限而又试图创建带标签的资源,则请求将失败。

Amazon ECS 控制对特定标签的访问

您可以在 IAM policy 的 Condition 元素中使用其他条件来控制可应用到资源的标签键和值。

以下条件键可用于上一节中的示例:

  • aws:RequestTag:指示请求中必须存在特定的标签键或标签键和值。也可在此请求中指定其他标签。

    • StringEquals 条件运算符配合使用,以强制实施特定的标签键和值组合,例如强制实施标签 cost-center=cc123

      "StringEquals": { "aws:RequestTag/cost-center": "cc123" }
    • StringLike 条件运算符配合使用,以在请求中强制实施特定的标签键;如强制实施标签键 purpose

      "StringLike": { "aws:RequestTag/purpose": "*" }
  • aws:TagKeys:强制实施在请求中使用的标签键。

    • ForAllValues 修饰符配合使用,以只强制实施请求中提供的特定标签键 (如果在请求中指定了标签,则只允许特定的标签键;不允许任何其他标签)。例如,允许标签键 environmentcost-center

      "ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] }
    • ForAnyValue 修饰符配合使用,以强制请求中至少存在一个指定的标签键。例如,强制请求中至少存在标签键 environmentwebserver 中的一个:

      "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] }

上述条件键可应用于支持标记的资源创建操作,以及 ecs:TagResource 操作。要了解 Amazon ECS API 操作是否支持添加标签,请参阅 Amazon ECS 的操作、资源和条件键

为强制用户指定标签,在创建资源时,您必须使用 aws:RequestTag 条件键或 aws:TagKeys 条件键,并在资源创建操作中使用修饰符 ForAnyValue。如果用户没有为资源创建操作指定标签,则不会对 ecs:TagResource 操作进行评估。

对于条件,条件键不区分大小写,条件值区分大小写。因此,要强制标签键区分大小写,请使用 aws:TagKeys 条件键,其中标签键指定为条件中的值。

有关多值条件的更多信息,请参阅IAM 用户指南中的创建测试多个键值的条件