更新时间:2024-07-05 GMT+08:00

标签策略语法

标签策略基本语法

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

{
    "tags": {
        "costcenter": {                 <!-- 策略键 -->
            "tag_key": {
                "@@assign": "CostCenter"                 <!-- 标签键 -->
            },
            "tag_value": {
                "@@assign": [
                    "100",                 <!-- 策略值 -->
                    "200"
                ]
            },
            "enforced_for": {                 <!-- 强制执行 -->
                "@@assign": [
                    "apig:instance"                 <!-- 服务和资源类型 -->
                ]
            }
        }
    }
}
  • 策略键:唯一标识策略语句的策略键。它必须与标签键的值相匹配,除了大小写处理。
  • 标签键:值必须跟策略键一致,但可以有多种大小写形式。如果不指定标签键,则默认为全部小写,即便策略键有大写也会使用全部小写指定。例如策略键指定为costcenter,标签键指定为CostCenter,则后续检验规则以CostCenter为准;策略键指定为CostCenter,标签键不指定,则后续校验规则以costcenter为准。
  • 策略值:一个或多个可接受标签值的列表。如果标签策略没有为标签键指定标签值,则任何值(包括没有值)都将视为合规。
  • 强制执行:表示阻止对指定服务和资源执行任何不合规标记操作。如未指定任何服务和资源类型,则此标签策略不会对任何资源生效。
  • 通配符:可以在标签值和强制执行字段中使用通配符 "*",不过必须遵循以下约束:
    • 每个标签值仅使用一个通配符。例如,允许使用 *@example.com,但不允许使用 *@*.com。
    • 对于强制执行,可以用“<service>:*”对该服务的所有资源启用强制执行。但是不能使用通配符指定所有服务或指定所有服务的某个资源。

继承运算符

在标签策略样例中,标签键,标签值和强制执行中使用了"@@assign"标识,该标识即为继承运算符。

继承运算符指定标签策略如何与组织树中的其他标签策略合并,以创建账号的有效标签策略。运算符包括值设置运算符和子控制运算符。

  • 值设置运算符
    您可以使用以下值设置运算符来控制策略与其父策略交互的方式:
    表1 值设置运算符

    运算符

    说明

    @@assign

    用指定设置覆盖任何继承的策略设置。如果未继承指定的设置,则此运算符会将该设置添加到有效策略中。此运算符可以应用于任何类型的任何策略设置。

    对于单值设置,此运算符将继承的值替换为指定值。

    对于多值设置(JSON数组),此运算符将删除所有继承的值,并将其替换为此策略指定的值。

    @@append

    向继承的设置添加指定的设置(而不删除任何设置)。如果未继承指定的设置,则此运算符会将该设置添加到有效策略中。只能将此运算符用于多值设置。

    此运算符将指定的值添加到继承数组中的任何值。

    @@remove

    从有效策略中删除指定的继承设置(如果存在)。只能将此运算符用于多值设置。

    此运算符仅从继承自父策略的值数组中删除指定值。其他值可以继续存在于数组中,并且可由子策略继承。

  • 子控制运算符

    默认情况下,允许所有运算符 (@@all)。

    • "@@operators_allowed_for_child_policies":["@@all"]表示:子OU和账号可以在策略中使用任何运算符。默认情况下,子策略中允许使用所有运算符。
    • "@@operators_allowed_for_child_policies":["@@assign", "@@append", "@@remove"]表示:子OU和账号只能在子策略中使用指定的运算符。您可以在此子控制运算符中指定一个或多个值设置运算符。
    • "@@operators_allowed_for_child_policies":["@@none"]表示:子OU和账号不能在策略中使用运算符。可以使用此运算符有效锁定在父策略中定义的值,以使子策略无法添加、追加或删除这些值。