

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

# 在建立時授予標記資源的許可
<a name="supported-iam-actions-tagging"></a>

以下的標籤建立 Amazon ECS API 動作允許您在建立資源時指定標籤。如果在資源建立動作中指定標籤， AWS 會執行額外的授權，以確認指派正確的許可來建立標籤。
+ `CreateCapacityProvider`
+ `CreateCluster`
+ `CreateService`
+ `CreateTaskSet`
+ `RegisterContainerInstance`
+ `RegisterTaskDefinition`
+ `RunTask`
+ `StartTask`

您可以使用資源標籤來實作以屬性為基礎的控制 (ABAC)。如需詳細資訊，請參閱[使用資源標籤控制對 Amazon ECS 資源的存取](control-access-with-tags.md)及[標記 Amazon ECS 資源](ecs-using-tags.md)。

若要允許在建立時標記，請建立或修改政策，以同時包含使用建立資源之動作的許可，例如 `ecs:CreateCluster` 或 `ecs:RunTask` 和 `ecs:TagResource` 動作。

下列範例示範一個政策，該政策允許使用者在建立叢集期間同時新增標籤。使用者沒有標記現有資源的權限 (他們不能直接呼叫 `ecs:TagResource` 動作)。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ecs:CreateCluster"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ecs:TagResource"
      ],
      "Resource": "*",
      "Condition": {
         "StringEquals": {
                  "ecs:CreateAction": [
                      "CreateCluster",
                      "CreateCapacityProvider",
                      "CreateService",
                      "CreateTaskSet",
                      "RegisterContainerInstance",
                      "RegisterTaskDefinition",
                      "RunTask",
                      "StartTask"
                  ]
          }
       }
    }
  ]
}
```

只有在資源建立動作中套用了標籤時，才評估 `ecs:TagResource` 動作。因此，在沒有標記條件的情況下，若請求中未指定標籤，則具備資源建立許可的使用者不需要使用 `ecs:TagResource` 動作的許可。然而，若該使用者試圖建立具有標籤的資源卻未具備使用 `ecs:TagResource` 動作的許可，則該請求會失敗。

## Amazon ECS 控制對特定標籤的存取
<a name="control-tagging"></a>

您可以在 IAM 政策的 `Condition` 元素中使用其他條件，來控制可套用至資源的標籤金鑰索和值。

下列條件金鑰機可與前一節中的範例搭配使用：
+ `aws:RequestTag`：表示請求中必須存在特定標籤金鑰或標籤金鑰與值。請求內亦可指定其他標籤。
  + 搭配 `StringEquals` 條件運算子使用，以強制結合特定標籤金鑰與值，例如強制執行標籤 `cost-center`=`cc123`：

    ```
    "StringEquals": { "aws:RequestTag/cost-center": "cc123" }
    ```
  + 搭配 `StringLike` 條件運算子使用，以在請求中強制執行特定標籤金鑰，例如強制執行標籤金鑰 `purpose`：

    ```
    "StringLike": { "aws:RequestTag/purpose": "*" }
    ```
+ `aws:TagKeys`：強制執行請求中使用的標籤金鑰。
  + 搭配 `ForAllValues` 修飾詞使用，若請求內提供特定標籤金鑰，將強制加以執行 (若請求內指定標籤，則僅允許特定標籤金鑰，不允許其他標籤)。例如，允許標籤金鑰 `environment` 或 `cost-center`：

    ```
    "ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] }
    ```
  + 搭配 `ForAnyValue` 修飾詞使用，以強制要求請求內至少具有一個指定的標籤金鑰。例如，請求內必須出現至少下列標籤金鑰 `environment` 或 `webserver` 之一：

    ```
    "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] }
    ```

這些條件金鑰可套用於支援標記的資源建立動作，以及 `ecs:TagResource` 動作。若要了解 Amazon ECS API 動作是否支援標記，請參閱 [Amazon ECS 的動作、資源和條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html)。

若要強制使用者在建立資源時指定標籤，您必須在資源建立動作內，搭配 `aws:RequestTag` 修飾詞使用 `aws:TagKeys` 條件金鑰或 `ForAnyValue` 條件金鑰。若使用者未針對資源建立動作指定標籤，則不會評估 `ecs:TagResource` 動作。

以條件而言，條件金鑰不區分大小寫，而條件值會區分大小寫。因此，欲強制標籤鍵區分大小寫，請使用 `aws:TagKeys` 條件索引鍵，其中標籤鍵指定為條件值。

 如需有關多值條件的詳細資訊，請參閱 *IAM User Guide* 中的 [Conditions with multiple context keys or values](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-logic-multiple-context-keys-or-values.html)。