更新时间:2024-03-18 GMT+08:00

合规策略

合规策略是一个可以用于评估资源是否合规的逻辑表达式。将合规策略应用到资源上时,可以评估出这个资源是否符合合规策略中的要求。

合规策略本身只是一个静态的逻辑,如果想要让其生效,必须将合规策略指定到一个具体的范围(如:通过设置过滤器来指定具体的资源范围)上,即生成一个具体的合规规则。

使用JSON表达式来表示一个合规策略定义,如表1所示。

表1 合规策略的定义-JSON表达式格式

参数

定义

说明

id

合规策略的唯一标识符

-

name

合规策略的名称

name最大长度为64个字符。

display_name

合规策略的展示名

display_name最大长度为64个字符。

description

合规策略的描述

description最大长度为512个字符。

parameters

合规策略的规则参数,即每个合规策略下包含的参数。

具有如下属性:

  • name
  • description
  • type
  • default_value
  • allowed_values
  • minimum
  • maximum
  • min_items
  • max_items
  • min_length
  • max_length
  • pattern

合规策略中包含的参数名称保持不变,您可以根据需要设置不同的值。

  • name:规则参数的名称。
  • description:规则参数的描述。
  • type:规则参数值的类型,包括String,Array,Boolean,Integer,Float。
  • default_value:规则参数的默认值。如果指定了默认值,用户可以不输入规则参数值,创建合规规则时将使用此默认值。
  • allowed_values:规则参数值允许的值列表。如果指定了allowed_values,那么参数的值只能够从这些值中选择。
  • minimum:策略参数的最小值,当参数类型为Integer或Float时生效。
  • maximum: 策略参数的最大值,当参数类型为Integer或Float时生效。
  • min_items:策略参数的最小项数,当参数类型为Array时生效。
  • max_items: 策略参数的最大项数,当参数类型为Array时生效。
  • min_length:策略参数的最小字符串长度或每项的最小字符串长度,当参数类型为String或Array时生效。
  • max_length: 策略参数的最大字符串长度或每项的最大字符串长度,当参数类型为String或Array时生效。
  • pattern:策略参数的字符串正则要求或每项的字符串正则要求,当参数类型为String或Array时生效。

keywords

合规策略关键词

一般为与合规策略相关的产品简称。

policy_type

合规策略的类型。

主要有以下类型:

  • builtin
  • custom
  • builtin:系统内置策略,这些合规策略定义由Config服务提供和维护。详见系统内置预设策略
  • custom: 用户自定义策略,用户创建的所有合规策略定义都具有此值。

policy_rule_type

合规策略的语法类型

DSL:一种Config服务提供的合规策略描述语言,用户可以根据此语法,将合规判断逻辑描述为一个具体的合规策略。

policy_rule

合规策略语法的逻辑表达式

关于如何使用DSL来编写合规策略的具体逻辑请参阅DSL语法

trigger_type

触发类型。

有以下类型:

  • resource
  • period
  • resource:在指定的资源发生更改时运行。
  • period:按照您设定的频率运行。

default_resource_types

合规策略评估的资源类型

大部分合规策略只评估部分的资源类型。创建合规规则时,建议只评估“default_resource_types”中的资源类型。

如下JSON表示了一个用于检查ECS实例的镜像ID是否在指定范围内的合规策略:

{
  "id": "5fa265c0aa1e6afc05a0ff07",
  "name": "allowed-images-by-id",
  "description": "指定允许的镜像ID列表,ECS实例的镜像ID不在指定的范围内,视为“不合规”",
  "parameters": {
    "listOfAllowedImages": {
      "name": "null",
      "description": "The list of allowed image IDs",
      "type": "Array"
      "allowed_values": null,
      "default_value": null,
    }
  },
  "keywords": [
    "ecs",
    "ims"
  ],
  "policy_type": "builtin",
  "policy_rule_type": "dsl",
  "trigger_type": "resource",
  "policy_rule": {
    "allOf": [
      {
         "value": "${resource().provider}",
         "comparator": "equals",
         "pattern": "ecs"
      },
      {
       "value": "${resource().type}",
       "comparator": "equals",
       "pattern": "cloudservers"
      },
      {
       "value": "${resource().properties.metadata.meteringImageId}",
        "comparator": "notIn",
        "pattern": "${parameters('listOfAllowedImages')}"
      }
    ]
   },
}

更多样例详见自定义合规规则样例