标签策略语法和示例 - AWS Organizations

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

标签策略语法和示例

本页介绍标签策略语法并提供示例。

标签策略语法

标签策略是一个纯文本文件,根据 JSON 的规则设置结构。标签策略的语法遵循管理策略类型的语法。有关该语法的完整讨论,请参阅了解管理策略继承。本主题重点介绍如何将该常规语法应用于标签策略类型的特定要求。

以下标签策略显示了基本标签策略语法:

{ "tags": { "costcenter": { "tag_key": { "@@assign": "CostCenter" }, "tag_value": { "@@assign": [ "100", "200" ] }, "enforced_for": { "@@assign": [ "secretsmanager:*" ] } } } }

标签策略语法包括以下元素:

  • tags 字段键名称。标签策略始终以此固定键名开头。它是上面示例策略中的顶行。

  • 唯一标识策略语句的策略键。它必须与标签键 的值相匹配,除了大小写处理。与标签键不同(下文将介绍),策略值区分大小写。

    在此示例中,costcenter 是策略键。

  • 至少有一个标签键,指定允许的标签键(具有您希望资源遵循的大小写)。如果未定义大小写处理,则标签键的默认大写处理是小写。标签键的值必须与策略键的值匹配。但是,由于策略键值不区分大小写,所以大小写可以不同。

    在此示例中,CostCenter 是标签键。这是符合标签策略要求所需的大小写处理。为此标签键使用其他大小写处理的资源不符合标签策略要求。

    您可以在一个标签策略中定义多个标签键。

  • (可选)标签键的一个或多个可接受标签值 的列表。如果标签策略没有为标签键指定标签值,则任何值(包括没有值)都将视为合规。

    在此示例中,CostCenter 标签键的可接受值为 100200

  • (可选)一个 enforced_for 选项,指示是否阻止对指定服务和资源执行任何不合规标记操作。在控制台中,这是用于创建标签策略的可视化编辑器中的 Prevent noncompliant operations for this tag (防止此标签的不合规操作) 选项。此选项的默认设置为空。

    示例标签策略指定所有 AWS Secrets Manager 资源必须具有此标签。

    警告

    只有当您具有使用标签策略经验的情况下,才可以更改默认选项。否则,您可能会阻止组织账户中的用户创建他们所需的资源。

  • 运算符指定标记策略如何与组织树中的其他标记策略合并,以创建账户的有效标签策略。在此示例中,@@assign 用于将字符串分配给 tag_keytag_valueenforced_for。有关运算符的更多信息,请参阅继承运算符

  • – 您可以在标签值和 enforced_for 字段中使用 * 通配符:

    • 您仅可以为每个标签值使用一个通配符。例如,允许使用 *@example.com,但不允许使用 *@*.com

    • 对于 enforced_for,您可以将 <service>:* 与某些服务一起使用,为该服务的所有资源启用强制执行。有关支持 enforced_for 的服务和资源类型的列表,请参阅支持强制执行的服务和资源类型

      您不能使用通配符指定所有服务或指定所有服务的某个资源。

标签策略示例

下面的示例标签策略 仅供参考。

注意

尝试在组织中使用这些示例标签策略之前,请注意以下事项:

  • 确保您已按照推荐的工作流开始使用标签策略。

  • 您应根据您的独特要求仔细查看和自定义这些标签策略。

  • 标签策略中的所有字符都受到最大大小的约束。本指南中的示例演示了使用额外空白编排格式的标签策略,以提高其可读性。但是,要在策略大小接近最大大小时节省空间,您可以删除任何空白。空白的示例包括引号外部的空格字符和换行符。

  • 未标记的资源不会在结果中显示为不合规。

示例 1:定义组织级的标签键大小写

以下示例显示了一个标签策略,该策略仅定义了两个标签键和您希望组织中的账户标准化所采用的大小写。

策略 A – 组织根标签策略

{ "tags": { "CostCenter": { "tag_key": { "@@assign": "CostCenter", "@@operators_allowed_for_child_policies": ["@@none"] } }, "Project": { "tag_key": { "@@assign": "Project", "@@operators_allowed_for_child_policies": ["@@none"] } } } }

此标签策略定义两个标签键:CostCenterProject。将此标签策略附加到组织根具有以下效果:

  • 组织中的所有账户继承此标签策略。

  • 组织中的所有账户都必须使用定义的大小写处理以实现合规性。具有 CostCenterProject 标签的资源符合要求。为标签键(例如,costcenterCostcenterCOSTCENTER)使用其他大小写处理的资源不符合要求。

  • @@operators_allowed_for_child_policies": ["@@none"] 行锁定标签键。附加在组织树(子策略)下方的标签策略不能使用值设置运算符来更改标签键,包括其大小写处理。

  • 对于所有标签策略,不会评估未标记的资源或未在标签策略中定义的标签是否符合标签策略。

AWS 建议您使用此示例作为指南,为要使用的标签键创建类似的标签策略。将其附加到组织根。然后创建类似于下一个示例的标签策略,该策略仅为已定义的标签键定义可接受值。

下一步:定义值

假定您将以前的标签策略附加到组织根。接下来,您可以创建类似于下文的标签策略并将其附加到账户。此策略定义 CostCenterProject 标签键的可接受值。

策略 B – 账户标签策略

{ "tags": { "CostCenter": { "tag_value": { "@@assign": [ "Production", "Test" ] } }, "Project": { "tag_value": { "@@assign": [ "A", "B" ] } } } }

如果将策略 A 附加到组织根,并将策略 B 附加到账户,则这些策略将合并,以便为该账户创建以下有效标签策略:

策略 A + 策略 B = 账户的有效标签策略

{ "tags": { "Project": { "tag_value": [ "A", "B" ], "tag_key": "Project" }, "CostCenter": { "tag_value": [ "Production", "Test" ], "tag_key": "CostCenter" } } }

有关策略继承的更多信息,包括继承运算符的工作方式示例和有效标签策略示例,请参阅了解管理策略继承

示例 2:防止使用标签键

要防止使用标签键,您可以将类似以下内容的标签策略附加到组织实体。

此示例策略指定 Color 标签键不接受任何值。它还指定子标签策略中不允许运算符。因此,受影响账户中的资源上的任何 Color 标签都被视为不符合要求。但是,enforced_for 选项实际上可防止受影响的账户使用 Color 标签标记 Amazon DynamoDB 表。

{ "tags": { "Color": { "tag_key": { "@@operators_allowed_for_child_policies": [ "@@none" ], "@@assign": "Color" }, "tag_value": { "@@operators_allowed_for_child_policies": [ "@@none" ], "@@assign": [] }, "enforced_for": { "@@assign": [ "dynamodb:table" ] } } } }