本文为您介绍标签策略继承和有效策略计算的方法,包括基本概念、工作原理和示例。

基本概念

概念 说明
策略继承 标签策略是按照资源目录的层级从上到下进行继承的。当策略绑定到资源目录的资源夹,该资源夹下的子资源夹和成员都会继承该策略。
父策略 在资源目录的树形组织结构上,绑定层级较高的策略相对于绑定层级较低的策略,称为父策略。
子策略 在资源目录的树形组织结构上,绑定层级较低的策略相对于绑定层级较高的策略,称为子策略。
有效策略 成员直接绑定的策略和继承的父策略会经过聚合,计算出一个最终策略,该最终策略就是成员上要执行的有效策略。
继承操作符 继承操作符用于控制继承的标签策略和当前绑定的标签策略如何进行聚合,进而计算出最终的有效策略。更多信息,请参见继承操作符

工作原理

  • 单账号模式

    在单账号模式下,如果为单账号绑定了多个标签策略,则会根据策略内容的标签键进行合并。如果存在冲突的标签键策略配置,则根据策略的绑定时间进行判断,绑定时间早的策略为有效策略。

  • 多账号模式
    在多账号模式下,资源目录的管理账号可以将标签策略绑定到资源目录的不同层级(Root资源夹、资源夹或成员)。具体如下:
    • 当策略绑定到Root资源夹时,所有的资源夹和成员都继承这个策略。
    • 当策略绑定到指定资源夹时,该资源夹下的所有成员和子资源夹都继承这个策略。
    • 当策略绑定到指定成员时,该策略仅在该成员上生效。

示例

如下以一个企业要求资源必须绑定环境标签env和项目标签Project为例,为您介绍策略继承和有效策略的含义。

  1. 为资源目录的Root资源夹配置名为PolicyA的标签策略。

    PolicyA策略内容如下:

    {
        "tags": {
            "env": {
                "tag_key": {
                    "@@assign": "env"
    
                },
                  "tag_value": {
                    "@@assign": [
                        "Production",
                        "Test"
                    ]
                }
            },
            "Project": {
                "tag_key": {
                    "@@assign": "Project"
    
                }
            }
        }
    }

    PolicyA中定义了envProject标签键的规范,并绑定在资源目录Root资源夹上。将产生如下效果:

    资源目录的所有成员都必须遵守PolicyA,即资源必须拥有envProject才被认为是合规的,而且env的标签值取值范围为ProductionTest

  2. 为Root资源夹下的指定成员配置名为PolicyB的标签策略。

    PolicyB策略内容如下:

    {
        "tags": {
            "env": {
                "tag_value": {
                    "@@append": [
                        "Development"
                    ]
                }
            },
            "Project": {
                "tag_value": {
                    "@@assign": [
                        "A",
                        "B"
                    ]
                }
            }
        }
    }

    PolicyB定义了env标签键要追加的标签值范围为DevelopmentProject标签键对应的标签值范围为AB

  3. 计算指定成员的有效策略。

    PolicyB绑定在指定成员上,则该成员上最终执行的有效策略为PolicyA和PolicyB的合并,即该成员绑定envProject取值范围内的标签值都是合规的。标签值的取值范围如下:

    标签键 标签值
    env
    • Production
    • Test
    • Development
    Project
    • A
    • B

    有效策略内容如下:

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