在 IAM 权限策略中使用标签 - 标记资源 AWS

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

在 IAM 权限策略中使用标签

AWS Identity and Access Management (IAM) 是您用来创建和管理权限策略的 AWS 服务,这些策略决定谁可以访问您的 AWS 资源。每次尝试访问 AWS 服务或读写AWS资源均受 IAM policy 的访问控制。

这些策略允许您对资源进行精细访问。您可以使用其中的特征微调此访问权限,即策略的 Condition 元素。可通过该元素指定必须与请求匹配的条件,以确定请求是否可以继续。您可以使用 Condition 元素检查以下内容:

  • 附加到发出请求的用户或角色的标签。

  • 附加到作为请求对象的资源上的标签。

与标签相关的条件密钥

下表描述了在 IAM 权限策略中可用于根据标签控制访问的条件密钥。通过这些密钥,您可执行以下操作:

  • 比较调用操作的主体上的标签。

  • 比较作为参数提供给操作的标签。

  • 比较操作将访问的资源所附的标签。

有关条件键及其使用方法的详细信息,请参阅条件密钥名称列中链接的页面。

条件密钥名称 描述

aws:PrincipalTag

将附加到发出请求的主体(IAM 角色或用户)的标签与您在策略中指定的标签进行比较。

aws:RequestTag 将请求中作为参数传递的标签密钥/值对与您在策略中指定的标签密钥/值对进行比较。

aws:ResourceTag

将附加到资源的密钥/值对与您在策略中指定的标签密钥/值对进行比较。

aws:TagKeys 只将请求中的标签密钥与您在策略中指定的密钥进行比较。

使用标签的 IAM 策略示例

例 示例 1:强制用户在创建资源时附加特定标签

以下 IAM 权限策略示例展示了如何强制创建或修改 IAM policy 标签的用户在密钥 Owner 中加入标签。此外,该策略要求将标签的值设置为与调用主体所附加的 Owner 标签相同的值。要使此策略发挥作用,所有主体必须附加 Owner 标签,并且必须阻止用户修改该标签。如果尝试创建或修改策略时未包含 Owner 标签,则策略将不匹配,不允许进行操作。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagCustomerManagedPolicies", "Effect": "Allow", "Action": [ "iam:CreatePolicy", "iam:TagPolicy" ], "Resource": "arn:aws:iam::123456789012:policy/*", "Condition": { "StringEquals": {"aws:RequestTag/Owner": "${aws:PrincipalTag/Owner}"} } } ] }
例 示例 2:使用标签限制“所有者”对资源的访问权限

下列示例中,IAM 权限策略仅当调用主体被标记与实例相同的 project 标签值时,才会让用户停止正在运行的 Amazon EC2 实例。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "ec2:StopInstances" ], "Resource": [ "arn:aws:iam::123456789012:instance/*" ], "Condition": { "StringEquals": {"aws:ResourceTag/project": "${aws:PrincipalTag/project}"} } } ] }

此例为基于属性的访问权限控制(ABAC) 的示例。有关使用 IAM 策略实施基于标签的访问控制策略的更多信息和其他示例,请参阅AWS Identity and Access Management 用户指南中的以下主题: