

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

# 控制对标签的访问
<a name="tag-permissions"></a>

要通过使用 API 来添加、查看和删除标签，主体需要在 IAM policy 中获取标记权限。

您也可以通过对标签使用 AWS 全局条件键来限制这些权限。在 AWS 支付密码学中，这些条件可以控制对标记操作（例如[TagResource](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_TagResource.html)和）的访问权限。[UntagResource](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_UntagResource.html)

有关示例策略和更多信息，请参阅 *IAM 用户指南*中的[根据标签键控制访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)。

用于创建和管理标签的权限如下所示。

**支付密码学：TagResource**  
允许主体添加或编辑标签。要在创建密钥时添加标签，主体必须在 IAM policy 中具有不限于特定密钥的权限。

**支付密码学：ListTagsForResource**  
允许主体查看密钥上的标签。

**支付密码学：UntagResource**  
允许主体从密钥中删除标签。

## 标记策略中的权限
<a name="tag-permission-examples"></a>

您可以在密钥政策或 IAM policy 中提供权限标记。例如，以下示例密钥政策向选定用户授予标记密钥的权限。它为所有可以担任示例管理员或开发人员角色的用户授予查看标签的权限。

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

****  

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

------

要授予主体对多个密钥的标记权限，您可以使用 IAM policy。为使此策略生效，每个密钥的密钥政策都必须允许账户使用 IAM policy 来控制对密钥的访问。

例如，以下 IAM policy 允许主体创建密钥。它还允许他们在指定账户中的所有密钥上创建和管理标签。这种组合允许委托人在创建密钥时使用[CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html)操作的 tags 参数向密钥添加标签。

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

****  

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

------

## 限制标签权限
<a name="tag-permissions-conditions"></a>

您可以通过使用策略条件限制标记权限。以下策略条件可应用于 `payment-cryptography:TagResource` 和 `payment-cryptography:UntagResource` 权限。例如，您可以使用 `aws:RequestTag/tag-key` 条件来允许主体仅添加特定标签，或阻止主体添加具有特定标签键的标签。
+ [aws：RequestTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag)
+ a@@ [ws: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)

作为使用标签控制对密钥的访问的最佳实践，请使用 `aws:RequestTag/tag-key` 或 `aws:TagKeys` 条件键来确定允许哪些标签（或标签键）。

例如，以下 IAM policy 与上一个类似。但是，此策略允许主体为具有 `Project` 标签键的标签创建标签 (`TagResource`) 并删除标签 `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` 运算符要求请求中所有的标签键与策略中的其中一个标签键匹配。`true`如果请求中没有标签，则`ForAllValues`运算符也会返回，但 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": "payment-cryptography:CreateKey",
      "Resource": "*"
    },
    {
      "Sid": "IAMPolicyViewAllTags",
      "Effect": "Allow",
      "Action": "payment-cryptography:ListTagsForResource",
      "Resource": "arn:aws:payment-cryptography:*:{{111122223333}}:key/*"
    },
    {
      "Sid": "IAMPolicyManageTags",
      "Effect": "Allow",
      "Action": [
        "payment-cryptography:TagResource",
        "payment-cryptography:UntagResource"
      ],
      "Resource": "arn:aws:payment-cryptography:*:{{111122223333}}:key/*",
      "Condition": {
          "ForAllValues:StringEquals": {"aws:TagKeys": "Project"}
      }
    }
  ]
}
```

------