标签策略语法和示例
本页介绍标签策略语法并提供示例。
标签策略语法
标签策略是一个纯文本文件,根据 JSON
以下标签策略显示了基本标签策略语法:
{ "tags": { "costcenter": { "tag_key": { "@@assign": "CostCenter" }, "tag_value": { "@@assign": [ "100", "200" ] }, "enforced_for": { "@@assign": [ "secretsmanager:*" ] } } } }
标签策略语法包括以下元素:
-
tags
字段键名称。标签策略始终以此固定键名开头。它是上面示例策略中的顶行。 -
唯一标识策略语句的策略键。它必须与标签键 的值相匹配,除了大小写处理。与标签键不同(下文将介绍),策略值不区分大小写。
在此示例中,
costcenter
是策略键。 -
至少有一个标签键,指定允许的标签键(具有您希望资源遵循的大小写)。如果未定义大小写处理,则标签键的默认大写处理是小写。标签键的值必须与策略键的值匹配。但是,由于策略键值不区分大小写,所以大小写可以不同。
在此示例中,
CostCenter
是标签键。这是符合标签策略要求所需的大小写处理。为此标签键使用其他大小写处理的资源不符合标签策略要求。您可以在一个标签策略中定义多个标签键。
-
(可选)标签键的一个或多个可接受标签值 的列表。如果标签策略没有为标签键指定标签值,则任何值(包括没有值)都将视为合规。
在此示例中,
CostCenter
标签键的可接受值为100
和200
。 -
(可选)一个
enforced_for
选项,指示是否阻止对指定服务和资源执行任何不合规标记操作。在控制台中,这是用于创建标签策略的可视化编辑器中的 Prevent noncompliant operations for this tag (防止此标签的不合规操作) 选项。此选项的默认设置为空。示例标签策略指定在所有 Amazon Secrets Manager 资源上传递的
CostCenter
标签必须符合此策略。警告
只有当您具有使用标签策略经验的情况下,才可以更改默认选项。否则,您可能会阻止组织账户中的用户创建他们所需的资源。
-
运算符指定标记策略如何与组织树中的其他标记策略合并,以创建账户的有效标签策略。在此示例中,
@@assign
用于将字符串分配给tag_key
、tag_value
和enforced_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"] } } } }
此标签策略定义两个标签键:CostCenter
和 Project
。将此标签策略附加到组织根具有以下效果:
-
组织中的所有账户继承此标签策略。
-
组织中的所有账户都必须使用定义的大小写处理以实现合规性。具有
CostCenter
和Project
标签的资源符合要求。为标签键(例如,costcenter
、Costcenter
或COSTCENTER
)使用其他大小写处理的资源不符合要求。 -
@@operators_allowed_for_child_policies": ["@@none"]
行锁定标签键。附加在组织树(子策略)下方的标签策略不能使用值设置运算符来更改标签键,包括其大小写处理。 -
对于所有标签策略,不会评估未标记的资源或未在标签策略中定义的标签是否符合标签策略。
Amazon 建议您使用此示例作为指南,为要使用的标签键创建类似的标签策略。将其附加到组织根。然后创建类似于下一个示例的标签策略,该策略仅为已定义的标签键定义可接受值。
下一步:定义值
假定您将以前的标签策略附加到组织根。接下来,您可以创建类似于下文的标签策略并将其附加到账户。此策略定义 CostCenter
和 Project
标签键的可接受值。
策略 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" ] } } } }