

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

# 控制對標籤的存取
<a name="tag-permissions"></a>

若要在 AWS KMS 主控台或使用 API 新增、檢視和刪除標籤，委託人需要標記許可。您可以在[金鑰政策](key-policies.md)中提供這些許可。您也可以在 IAM 政策 (包括 [VPC 端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy)) 中提供，但僅當[金鑰政策允許](key-policy-default.md#allow-iam-policies)時。[AWSKeyManagementServicePowerUser](security-iam-awsmanpol.md#security-iam-awsmanpol-AWSKeyManagementServicePowerUser) 受管政策允許主體在帳戶可存取的所有 KMS 金鑰上標記、取消標記和列出標籤。

您也可以使用標籤的 AWS 全域條件索引鍵來限制這些許可。在 AWS KMS中，這些條件可以控制對標記操作的存取，例如 [TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html) 和 [UntagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_UntagResource.html)。

**注意**  
授予主體管理標籤和別名的許可時，請務必謹慎。變更標記或別名可允許或拒絕客戶受管金鑰的許可。如需詳細資訊，請參閱 [適用於 的 ABAC AWS KMS](abac.md) 和 [使用標籤來控制對 KMS 金鑰的存取](tag-authorization.md)。

如需政策和詳細資訊，請參閱《*IAM 使用者指南*》中的[根據標籤索引鍵控制存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)。

建立和管理標籤的許可如下所示。

**kms:TagResource**  
允許主體新增或編輯標籤。若要在建立 KMS 金鑰時新增標籤，主體必須在 IAM 政策中具有不限於特定 KMS 金鑰的許可。

**kms:ListResourceTags**  
允許主體檢視 KMS 金鑰上的標籤。

**kms:UntagResource**  
允許主體從 KMS 金鑰刪除標籤。

## 標記政策中的許可
<a name="tag-permission-examples"></a>

您可以在金鑰政策或 IAM 政策中提供標記許可。例如，以下範例金鑰政策會給予精選使用者標記 KMS 金鑰的許可。它為所有可以擔任範例管理員或開發人員角色的使用者提供檢視標籤的許可。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "example-key-policy",
  "Statement": [
    { 
      "Sid": "EnableIAMUserPermissions",
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::111122223333:root"},
      "Action": "kms:*",
      "Resource": "*"
    },
    {
      "Sid": "AllowAllTaggingPermissions",
      "Effect": "Allow",
      "Principal": {"AWS": [
        "arn:aws:iam::111122223333:user/LeadAdmin",
        "arn:aws:iam::111122223333:user/SupportLead"
      ]},
      "Action": [
          "kms:TagResource",
          "kms:ListResourceTags",
          "kms:UntagResource"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowRolesViewTags",
      "Effect": "Allow",
      "Principal": {"AWS": [
        "arn:aws:iam::111122223333:role/Administrator",
        "arn:aws:iam::111122223333:role/Developer"
      ]},
      "Action": "kms:ListResourceTags",
      "Resource": "*"
    }
  ]
}
```

------

若要授予主體在多個 KMS 金鑰上的標記許可，您可以使用 IAM 政策。若要讓此政策生效，每個 KMS 金鑰的金鑰政策必須允許帳戶使用 IAM 政策來控制對 KMS 金鑰的存取。

例如，以下 IAM 政策允許主體建立 KMS 金鑰。它也允許其在指定帳戶中的所有 KMS 金鑰上建立和管理標籤。這種組合允許主體使用 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作的[標籤](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-Tags)參數在建立 KMS 金鑰時新增標籤。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPolicyCreateKeys",
      "Effect": "Allow",
      "Action": "kms:CreateKey",
      "Resource": "*"
    },
    {
      "Sid": "IAMPolicyTags",
      "Effect": "Allow",
      "Action": [
        "kms:TagResource",
        "kms:UntagResource",
        "kms:ListResourceTags"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*"
    }    
  ]
}
```

------

## 限制標籤許可
<a name="tag-permissions-conditions"></a>

您可以使用[政策條件](policy-conditions.md)來限制標記許可。下列政策條件可套用至 `kms:TagResource` 和 `kms:UntagResource` 許可。例如，您可以使用 `aws:RequestTag/tag-key` 條件，允許主體僅新增特定標籤，或防止主體新增具有特定標籤索引鍵的標籤。或者，您可以使用 `kms:KeyOrigin` 條件，以防止主體使用[匯入金鑰材料](importing-keys.md)標記或取消標記 KMS 金鑰。
+ [aws:RequestTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag)
+ [aws:ResourceTag/*tag-key*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) (僅限 IAM 政策)
+ [aws:TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tag-keys)
+ [kms:CallerAccount](conditions-kms.md#conditions-kms-caller-account)
+ [kms:KeySpec](conditions-kms.md#conditions-kms-key-spec)
+ [kms:KeyUsage](conditions-kms.md#conditions-kms-key-usage)
+ [kms:KeyOrigin](conditions-kms.md#conditions-kms-key-origin)
+ [kms:ViaService](conditions-kms.md#conditions-kms-via-service)

最佳實務的做法是，當您使用標籤來控制 KMS 金鑰的存取時，請使用 `aws:RequestTag/tag-key` 或 `aws:TagKeys` 條件鍵來確定允許哪些標籤 (或標籤索引鍵)。

例如，下列 IAM 政策與前一個類似。不過，此政策允許主體建立標籤 (`TagResource`) 並僅為具有 `Project` 標籤索引鍵的標籤刪除標籤 `UntagResource`。

由於 `TagResource` 和 `UntagResource` 請求可以包含多個標籤，您必須指定具有 [aws:TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) 條件的 `ForAllValues` 或 `ForAnyValue` 集合運算子。`ForAnyValue` 運算子會要求請求中的至少一個標籤索引鍵與政策中的標籤索引鍵相符。`ForAllValues` 運算子會要求請求中的所有標籤索引鍵與政策中的其中一個標籤索引鍵相符。`ForAllValues` 運算子也會傳回 `true`，如果在請求中沒有標籤，但 TagResource 和 UntagResource 會在未指定標籤時失敗。如需集合運算子的詳細資訊，請參閱《*IAM 使用者指南*》中的[使用多個索引鍵和值](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions)。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPolicyCreateKey",
      "Effect": "Allow",
      "Action": "kms:CreateKey",
      "Resource": "*"
    },
    {
      "Sid": "IAMPolicyViewAllTags",
      "Effect": "Allow",
      "Action": "kms:ListResourceTags",
      "Resource": "arn:aws:kms:*:111122223333:key/*"
    },
    {
      "Sid": "IAMPolicyManageTags",
      "Effect": "Allow",
      "Action": [
        "kms:TagResource",
        "kms:UntagResource"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*",
      "Condition": {
          "ForAllValues:StringEquals": {"aws:TagKeys": "Project"}
      }
    }
  ]
}
```

------