Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon EC2 API 操作支持的资源级权限

资源级权限 是指指定允许用户对哪些资源执行操作的能力。Amazon EC2 对资源级权限提供部分支持。这意味着对于某些 Amazon EC2 操作,您可以控制何时允许用户执行操作 (基于必须满足的条件)或是允许用户使用的特定资源。例如,您可以向用户授予启动实例的权限,但是仅限特定类型的实例,并且只能使用特定的 AMI。

如果 Amazon EC2 API 操作不支持资源级权限,那么,您可以为用户授予使用该操作的权限,但是必须为策略语句的资源元素指定 *。

有关 Amazon EC2 操作创建或修改的资源以及可以在 IAM 策略语句中使用的 ARN 和 Amazon EC2 条件键的更多信息,请参阅 IAM 用户指南 中的 Amazon EC2 的操作、资源和条件键

有关更多信息和示例策略,请参阅 Amazon EC2 用户指南 中的 Amazon EC2 的 IAM 策略

用于标记的资源级权限

某些资源创建 Amazon EC2 API 操作允许您在创建资源时指定标签。有关更多信息,请参阅标记资源

为使用户能够在创建时标记资源,他们必须具有使用创建该资源的操作的权限,如 ec2:RunInstancesec2:CreateVolume。如果在资源创建操作中指定了标签,则 Amazon 会对 ec2:CreateTags 操作执行额外的授权,以验证用户是否具备创建标签的权限。因此,用户还必须具有使用 ec2:CreateTags 操作的显式权限。

对于 ec2:CreateTags 操作,您可以使用 ec2:CreateAction 条件键将标记权限限制为仅限资源创建操作。例如,下面的策略允许用户启动实例并在启动期间向实例和卷应用任何标签。用户无权标记任何现有资源 (他们无法直接调用 ec2:CreateTags 操作)。

{ "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }

同样,下面的策略允许用户创建卷并在创建卷期间向卷应用任何标签。用户无权标记任何现有资源 (他们无法直接调用 ec2:CreateTags 操作)。

{ "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVolume" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "CreateVolume" } } } ] }

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

如果在启动模板中提供了标签,并在 ec2:CreateTags 操作中指定了启动模板,则还会评估 ec2:RunInstances 操作。有关策略示例,请参阅启动模板中的标签

您可以使用以下条件键来控制应用到资源的标签键和值:

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

上述条件键可应用于支持标记的资源创建操作,以及 ec2:CreateTagsec2:DeleteTags 操作。

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

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

有关多值条件的更多信息,请参阅IAM 用户指南中的创建测试多个键值的条件。有关示例 IAM 策略,请参阅 使用 AWS CLI 或 AWS SDK 的策略示例