一、语法格式
策略语法以 JSON 格式为基础。创建或更新的策略不满足 JSON 格式时,将无法提交成功也无法生效,所以用户必须要确保 JSON 格式正确。
二、语法约定
基本的标签策略语法,以标签值的取值方式区分如下:
指定值动态值{ "tags": { "principal负责人": { "tag_key": {"@@assign": "principal负责人"}, "tag_value": { "@@assign": ["value姓名1"] }, "resource_type_scope": { "@@assign": ["cvm:instance", "cvm:volume"] }, "detection": {"@@assign": "on"},//检测是系统默认启用功能,将按照指定资源指定标签键检测标签值是否合规默认开启,在json中默认不显示 "correction": {"@@assign": "on"},//自动修复。指定1个值时可以开启,但多个指定值无法自动修复 "auto_assign": {"@@assign": "on"},//自动赋值-标签键 "enforced_for": { "@@assign": ["*"] },//强制执行。当值不为"value姓名1"则拦截、不允许绑定其他值 "auto_assign_value": {"@@assign": "on"}//自动赋值-标签值 } }}{ "tags": { "principal负责人": { "tag_key": {"@@assign": "principal负责人"}, "tag_value_dynamic": {"@@assign": "on"},//开启动态值,取值以子用户在访问管理中绑定的同名标签键的值为准 "resource_type_scope": { "@@assign": ["cvm:instance", "cvm:volume"] }, "detection": {"@@assign": "on"},//检测是系统默认启用功能,将按照指定资源指定标签键检测标签值是否合规默认开启,在json中默认不显示 "correction": {"@@assign": "on"},//自动修复,动态值也只有一个值,可开启自动修复 "auto_assign": {"@@assign": "on"},//自动赋值-标签键 "enforced_for": { "@@assign": ["*"] },//强制执行。当值不为"value姓名1"则拦截、不允许绑定其他值 "auto_assign_value": {"@@assign": "on"}//自动赋值-标签值 } }}
语法中的元素
| 元素 | 是否必填 | 使用说明 | 对应到示例中的含义 |
| tags | 是 | 标签策略始终以 tags 作为开头、位于策略的第一行,固定值 | tags 固定值 |
| policy_key | 是 | 策略键。作为唯一标识策略语句的策略键,与标签键取值相同。一个标签策略中可以定义多个策略键。区分大小写 | 将 principal负责人 作为策略键 |
| tag_key | 是 | 标签键。作为标识符合要求的标签键,与策略键取值相同。一个标签策略中可定义多个标签键。区分大小写 | 将 principal负责人 作为标签键 |
| tag_value | 是 | 标签值。作为标签键符合要求的标签值 | 将 value姓名1分配给标签值 ,principal负责人 作为允许值 |
| tag_value_dynamic | 否 | 标签值是否使用动态值。如开启,则需要保障子用户已绑定同名标签键,将以对应值为准。 | on将动态取该子用户的同名标签值 |
| resource_type_scope | 是 | 资源类型范围。作为标签键值指定的生效范围 | 将限定生效范围为 cvm:instance,cvm:volume |
| detection | 否 | 系统默认开启(无论是否填写) | on将标签键值生效的资源范围下的检测功能开启 |
| correction | 否 | 是否开启自动修复。作为标签键值是否需自动修复的开关 | on 将标签键值生效的资源范围下的自动修复功能开启 |
| auto_assign | 否 | 是否开启自动赋值。表示标签键是否需要默认展示在编辑标签的位置 | on将标签键生效的资源范围下的自动赋值功能开启 |
| auto_assign_value | 否 | 是否开启自动赋值。表示标签值是否需要默认展示在编辑标签的位置 | on将标签值生效的资源范围下的自动赋值功能开启 |
| enforced_for | 否 | 是否开启强制执行。表示对于不符合要求的标签键值是否需要拦截绑定 | *将标签键值所有的资源的强制执行功能开启 |
三、策略长度限制
每条策略长度限制为4096个字符,超出则无法提交策略。若超出,请重新添加新策略,请参见 标签策略概述中的使用限制。
四、生效对象
你可以将标签策略绑定到多个用户实体对象上(主账号、主账号下的子用户),但它只会对所绑定的用户生效。
·当你将标签策略绑定到主账号时,则只会影响该主账号。
·当你将标签策略绑定到子用户时,则只会影响该子用户。
五、生效时间
生效对象在操作资源标签时,将会按照标签策略实时检测对应资源是否绑定对应标签键值。此过程时间延迟将在10s 以内。
六、生效优先级
你可以给一个用户实体绑定多个标签策略,但最终会将多个标签策略合并为一个有效策略。合并规则如下:
1. 如果策略键不重复,则按多个策略键执行,但有效策略中全部策略键不会超过50个。如果超过,则从第51个开始不会被合并。
2. 如果策略键重复,且每个策略键约定的标签值规则不同,则以最早绑定的标签策略为准。例如 A 策略要求 key=1 时,需要 value=1,但 B 策略要求 key=1 时,需要 value=2,但 A 策略先绑定到用户,则以 A 策略为准。
七、生效符号
运算符用来控制标签策略中的运算规则。这些运算符目前仅支持赋值运算符。
| 运算符 | 是否必填 | 使用说明 | 对应到示例中的含义 |
| @@assign | 是 | 指定。用于将指定内容分配给指定元素 | 指定策略键、标签键为 principal负责人指定标签值为 value姓名1指定资源类型范围为 cvm:instance,cvm:volume指定是否自动修复为 on |