

# Amazon Identity and Access Management 资源的标签
<a name="id_tags"></a>

*标签*是您分配给 Amazon 资源的自定义属性标签。每个标签具有两个部分：
+ *标签键* （例如，`CostCenter`、`Environment`、`Project` 或 `Purpose`）。
+ 一个称为*标签值*的可选字段（例如，`111122223333`、`Production` 或团队名称）。省略标签值与使用空字符串效果相同。

这些被统称为键-值对。有关 IAM 资源上可以拥有的标签数量的限制，请参阅 [IAM 和 Amazon STS 配额](reference_iam-quotas.md)。

**注意**  
有关标签键和标签键值区分大小写的详细信息，请参阅 [Case sensitivity](#case-sensitivity)。

标签有助于您标识和组织 Amazon 资源。许多 Amazon 服务支持标记，因此，您可以将同一标签分配给来不同服务的资源，以指示这些资源是相关的。例如，您可以将相同的标签分配给为 Amazon S3 存储桶分配的 IAM 角色。有关标签添加策略的更多信息，请参阅《用户指南》**中的 [为 Amazon 资源添加标签](https://docs.amazonaws.cn/tag-editor/latest/userguide/tagging.html)。

除了通过标签标识、组织和跟踪 IAM 资源之外，您还可以在 IAM policy 中使用标签，帮助控制哪些人可以查看并与您的资源交互。要了解有关使用标签控制访问的更多信息，请参阅 [使用标签控制对 IAM 用户和角色的访问以及他们进行的访问](access_iam-tags.md)。

您还可以在 Amazon STS 中使用标签，以在代入角色或联合身份用户身份时添加自定义属性。有关更多信息，请参阅 [在 Amazon STS 中传递会话标签](id_session-tags.md)。

**Topics**
+ [选择 Amazon 标签命名约定](#id_tags_naming)
+ [在 IAM 和 Amazon STS 中进行标记的规则](#id_tags_rules)
+ [标记 IAM 用户](id_tags_users.md)
+ [标记 IAM 角色](id_tags_roles.md)
+ [标记客户管理型策略](id_tags_customer-managed-policies.md)
+ [标记 OpenID Connect（OIDC）身份提供者](id_tags_oidc.md)
+ [标记 IAM SAML 身份提供者](id_tags_saml.md)
+ [为 Amazon EC2 角色标记实例配置文件](id_tags_instance-profiles.md)
+ [标记服务器证书](id_tags_server-certificates.md)
+ [标记虚拟 MFA 设备](id_tags_virtual-mfa.md)
+ [在 Amazon STS 中传递会话标签](id_session-tags.md)

## 选择 Amazon 标签命名约定
<a name="id_tags_naming"></a>

当您开始将标签附加到您的 IAM 资源时，请谨慎选择标签命名约定。对您的所有 Amazon 标签应用同一约定。如果您在策略中使用标签来控制对 Amazon 资源的访问，这一点尤为重要。如果您已在 Amazon 中使用标签，请检查您的命名约定并相应地进行调整。

**注意**  
如果您的账户是 Amazon Organizations 的成员，请参阅《Amazon Organizations 用户指南》中的[标签策略](https://docs.amazonaws.cn/organizations/latest/userguide/orgs_manage_policies_tag-policies.html)，以了解有关在 Amazon Organizations 中使用标签的更多信息。

### 标签命名的最佳实践
<a name="id_tags_naming_best_practices"></a>

以下是标签的一些最佳实践和命名约定。

确保标签名称的使用一致。例如，标签 `CostCenter` 与 `costcenter` 是不同的，因此一个标签可能会被配置为用于财务分析和报告的成本分配标签，而另一个标签可能不会这样配置。同样，`Name` 标签将出现在 Amazon 控制台中，用于很多资源，但 `name` 标签不会。有关标签键和标签键值区分大小写的详细信息，请参阅 [Case sensitivity](#case-sensitivity)。

许多标签由 Amazon 预定义，或由各种 Amazon 服务自动创建。很多 Amazon 定义的标签名称全部使用小写字母，名称中的单词之间用连字符分隔，前缀用于标识标签的源服务。例如：
+ `aws:ec2spot:fleet-request-id` 标识启动实例的 Amazon EC2 竞价型实例请求。
+ `aws:cloudformation:stack-name` 标识创建资源的 Amazon CloudFormation 堆栈。
+ `elasticbeanstalk:environment-name` 标识创建资源的应用程序。

考虑使用全部小写字母命名标签，用连字符分隔单词，并使用前缀标识组织名称或缩写名称。例如，可以虚构一家名为 *AnyCompany* 的公司，可以定义如下标签：
+ `anycompany:cost-center` 标识内部成本中心代码 
+ `anycompany:environment-type` 确定环境是开发、测试还是生产环境
+ `anycompany:application-id` 标识为其创建资源的应用程序 

前缀可以确保将标签明确标识为由贵组织定义，而不是由 Amazon 或您可能正在使用的第三方工具定义。使用所有小写字母和连字符作为分隔符，可以避免对如何大写标签名称产生混淆。例如，`anycompany:project-id` 比 `ANYCOMPANY:ProjectID`、`anycompany:projectID` 或 `Anycompany:ProjectId` 更易记。

## 在 IAM 和 Amazon STS 中进行标记的规则
<a name="id_tags_rules"></a>

大量约定管理 IAM 和 Amazon STS 中标签的创建和应用。

### 命名标签
<a name="id_tags_rules_creating"></a>

为 IAM 资源、Amazon STS 代入角色会话和 Amazon STS 联合身份用户会话制定标签命名约定时，请遵守以下约定：

**字符要求** - 标签键和值可以包含字母、数字、空格以及 \$1 . : / = \$1 - @ 符号的任意组合。

**区分大小写** - 标签键是否区分大小写根据标记的 IAM 资源的类型而不同。IAM 用户和角色的标签键值不区分大小写，但会保留大小写。这意味着您不能拥有单独的 **Department** 和 **department** 标签键。如果您已使用 **Department=finance** 标签标记用户并添加 **department=hr** 标签，则它会替换第一个标签。不会添加第二个标签。

对于其他 IAM 资源类型，标签键值区分大小写。这意味着您可以有单独的 **Costcenter** 和 **costcenter** 标签键。例如，如果您使用 **Costcenter = 1234** 标签为客户托管的策略添加了标签，并且添加了 **costcenter = 5678** 标签，策略将同时拥有 **Costcenter** 和 **costcenter** 标签键。

作为最佳实践，我们建议您避免使用大小写处理不一致的类似标签。我们建议您确定利用标签的策略，并在所有资源类型中一致地实施该策略。要了解有关标记最佳实践的更多信息，请参阅《Amazon Web Services 一般参考》中的 [标记 Amazon 资源](https://docs.amazonaws.cn/general/latest/gr/aws_tagging.html)。

以下列表显示了附加到 IAM 资源的标签键在区分大小写方面的差异。

标签键值**不**区分大小写：
+ IAM 角色
+ IAM 用户

标签键值区分大小写。
+ 客户托管策略
+ 实例配置文件
+ OpenID Connect 身份提供程序
+ SAML 身份提供程序
+ 服务器证书
+ 虚拟 MFA 设备

此外，以下规则适用：
+ 您不能创建以文本 **aws:** 开头的标签键或值。此标签前缀是专为 Amazon 内部使用预留的。
+ 您可以使用空值创建标签（如 **phoneNumber = **）。不能创建空标签键。
+ 您不能在单个标签中指定多个值，但可以在单个值中创建自定义多值结构。例如，假设用户 Zhang 在工程团队和 QA 团队工作。如果附加 **team = Engineering** 标签，然后附加 **team = QA** 标签，则会将标签的值将从 **Engineering** 更改为 **QA**。相反，您可以使用自定义分隔符在单个标签中包含多个值。在此示例中，您可以将 **team = Engineering:QA** 标签附加到 Zhang。
**注意**  
在此示例中，要使用 **team** 标签控制对工程师的访问，您必须创建一个允许每个可能包含 **Engineering**（包括 **Engineering:QA**）的配置的策略。要了解有关在策略中使用标签的更多信息，请参阅 [使用标签控制对 IAM 用户和角色的访问以及他们进行的访问](access_iam-tags.md)。

### 应用和编辑标签
<a name="id_tags_rules_applying"></a>

在将标签附加到 IAM 资源时遵循以下约定：
+ 您可以标记大多数 IAM 资源，但不能标记组、代入的角色、访问报告或基于硬件的 MFA 设备。
+ 不能使用标签编辑器标记 IAM 资源。标签编辑器不支持 IAM 标签。有关将标签编辑器与其他服务结合使用的信息，请参阅《Amazon Resource Groups 用户指南》中的 [使用标签编辑器](https://docs.amazonaws.cn/awsconsolehelpdocs/latest/gsg/tag-editor.html)**。
+ 要标记 IAM 资源，您必须拥有特定权限。要标记或取消标记资源，您还必须有权列出标签。有关详细信息，请参阅本页末尾的每个 IAM 资源的主题列表。
+ Amazon 账户中 IAM 资源的数量和大小是有限的。有关更多信息，请参阅 [IAM 和 Amazon STS 配额](reference_iam-quotas.md)。
+ 您可以将同一标签应用于多个 IAM 资源。例如，假设您有一个名为 `AWS_Development` 的部门，有 12 位成员。您可以让 12 位用户和一个角色具有标签键 **department** 以及值 **awsDevelopment** (**department = awsDevelopment**)。您还可以在其他[支持标记的服务](reference_aws-services-that-work-with-iam.md)中的资源上使用相同标签。
+ IAM 实体（用户或角色）不能具有同一标签键的多个实例。例如，如果您有一个标签键值对为 **costCenter = 1234** 的用户，则可以附加标签键值对 **costCenter = 5678**。IAM 将 **costCenter** 标签的值更新为 **5678**。
+ 要编辑附加到 IAM 实体（用户或角色）的标签，请附加具有新值的标签以覆盖现有标签。例如，假设您有一个标签键值对为 **department = Engineering** 的用户。如果需要将该用户移动到 QA 部门，则可将 **department = QA** 标签键值对附加到该用户。这将导致 **department** 标签键的 **Engineering** 值被替换为 **QA** 值。