

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配 IAM 政策使用標籤
<a name="tagging-iot-iam"></a>

您可以在用於 AWS IoT API 動作的 IAM 政策中，套用以標籤為基礎的資源層級許可。這可讓您更有效地控制使用者可以建立、修改或使用哪些資源。您可以使用 `Condition` 元素 (也稱為 `Condition` 區塊)，以及 IAM 政策中的以下條件內容金鑰和值，來根據資源標籤控制使用者存取 (許可)：
+ 使用 `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 的資源及其支援的條件索引鍵的詳細資訊，請參閱 [動作、資源和條件索引鍵 AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.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 政策評估邏輯。

以下範例政策會針對 `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"]
            }
```

**注意**  
如果您允許或拒絕使用者根據標籤存取資源，請務必考慮明確拒絕使用者將這些標籤新增至相同資源或從中移除的能力。否則，使用者可能透過修改標籤來避開您的限制，並取得資源的存取。