

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

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

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

**注意**  
IAM 策略中的条件上下文密钥和值仅适用于能够标记的资源标识符为必填参数的托管集成操作。例如，不允许或根据条件上下文密钥和值拒绝使用，因为此请求中未引用任何可标记的资源（托管资源、配置文件、凭据储物柜、空中任务）。[ GetCustomEndpoint ](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_GetCustomEndpoint)有关可标记的托管集成资源及其支持的条件密钥的更多信息，请阅读 AWS IoT 托管集成的[操作、资源和条件密钥功能。 AWS IoT Device Management](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotmanagedintegrationsfeatureofiotdevicemanagement.html)

有关使用标签的更多信息，请参阅《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 策略的元素、变量和评估逻辑的详细语法、描述和示例。

以下示例策略对`CreateManagedThing`操作应用了两个基于标签的限制。受此策略限制的 IAM 用户：
+ 无法使用标签 “env=prod” 创建托管事物（在示例中，参见该行）。`"aws:RequestTag/env" : "prod"`
+ 无法修改或访问具有现有标签 “env=prod” 的托管事物（在示例中，参见该行）。`"aws:ResourceTag/env" : "prod"`

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "iotmanagedintegrations:CreateManagedThing",
      "Resource": "arn:aws:iotmanagedintegrations:{{us-east-1}}:{{123456789012}}:managed-thing/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/env": "prod"
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "iotmanagedintegrations:CreateManagedThing",
        "iotmanagedintegrations:DeleteManagedThing",
        "iotmanagedintegrations:GetManagedThing",
        "iotmanagedintegrations:UpdateManagedThing"
      ],
      "Resource": "arn:aws:iotmanagedintegrations:{{us-east-1}}:{{123456789012}}:managed-thing/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/env": "prod"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "iotmanagedintegrations:CreateManagedThing",
        "iotmanagedintegrations:DeleteManagedThing",
        "iotmanagedintegrations:GetManagedThing",
        "iotmanagedintegrations:UpdateManagedThing"
      ],
      "Resource": "*"
    }
  ]
}
```

------

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

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

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