

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

# 在 IAM 策略中使用标签
<a name="tagging-iot-iam"></a>

可以在用于 AWS IoT API 操作的 IAM 策略中应用基于标签的资源级权限。这可让您更好地控制用户可创建、修改或使用哪些资源。在 IAM 策略中将 `Condition` 元素（也称作 `Condition` 块）与以下条件上下文键和值结合使用来基于资源标签控制用户访问（权限）：
+ 使用 `aws:ResourceTag/{{tag-key}}: {{tag-value}}` 可允许或拒绝带特定标签的资源上的用户操作。
+ 使用 `aws:RequestTag/{{tag-key}}: {{tag-value}}` 可要求在发出创建或修改允许标签的资源的 API 请求时使用（或不使用）特定标签。
+ 使用 `aws:TagKeys: [{{tag-key}}, ...]` 可要求在发出创建或修改允许标签的资源的 API 请求时使用（或不使用）一组特定标签键。

**注意**  
IAM 策略中的条件上下文密钥和值仅适用于那些以可标记的资源的标识符为必填参数的 AWS IoT 操作。例如，根据条件上下文键和值，[DescribeEndpoint](https://docs.aws.amazon.com//iot/latest/apireference/API_DescribeEndpoint)不允许或拒绝使用，因为此请求中未引用任何可标记的资源（事物组、事物类型、主题规则、作业或安全配置文件）。有关可标记 AWS IoT 资源及其支持的条件键的更多信息，请阅读的[操作、资源和条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html)。 AWS IoT

有关使用标签的更多信息，请参阅《AWS Identity and Access Management 用户指南》**中的[使用标签控制访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)。该指南的 [IAM JSON 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)一部分包含 IAM 中的 JSON 策略的元素、变量和评估逻辑的详细语法、描述和示例。

以下示例策略应用 `ThingGroup` 操作两个基于标签的限制。受此策略限制的 IAM 用户：
+ 无法创建标签 “env=prod” 的事物组（在示例中，请参阅行 `"aws:RequestTag/env" : "prod"`)。
+ 无法修改或访问具有现有标签“env=prod”的资源（在示例中，请参阅行 `"aws:ResourceTag/env" : "prod"`）。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "iot:CreateThingGroup",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/env": "prod"
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "iot:CreateThingGroup",
        "iot:DeleteThingGroup",
        "iot:DescribeThingGroup",
        "iot:UpdateThingGroup"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/env": "prod"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:CreateThingGroup",
        "iot:DeleteThingGroup",
        "iot:DescribeThingGroup",
        "iot:UpdateThingGroup"
      ],
      "Resource": "*"
    }
  ]
}
```

您还可以为给定标签键指定多个标签值，方法是将它们括在列表中，如下所示：

```
            "StringEquals" : {
              "aws:ResourceTag/env" : ["dev", "test"]
            }
```

**注意**  
如果您基于标签允许或拒绝用户访问资源，则必须考虑显式拒绝用户对相同资源添加或删除这些标签的能力。否则，用户可能通过修改资源标签来绕过您的限制并获得资源访问权限。