更新时间:2025-12-03 GMT+08:00

资源合规概述

概述

资源合规特性帮助您快速创建一组合规规则,用于评估您的资源是否满足合规要求。您可以选择Config提供的系统内置预设策略或自定义策略,并指定需要评估的资源范围来创建一个合规规则;合规规则创建后,有多种机制触发规则评估,然后查看合规规则的评估结果来了解资源的合规情况。

在使用资源合规时,如果您是组织管理员或Config服务的委托管理员,您还可以添加组织类型的资源合规规则,直接作用于您组织内账号状态为“正常”的所有成员账号中。

针对合规规则评估出的不合规资源,合规修正功能可以帮助您设置基于合规规则的修正配置,通过关联RFS服务的私有模板或FunctionGraph服务的函数实例,按照您自定义的修正逻辑对不合规资源进行快速修正,确保您的云上资源持续合规。

约束与限制

  • 每个账号最多可以添加500个合规规则(包括由组织合规规则和合规规则包创建的托管规则)。
  • 添加、修改、启用合规规则和触发规则评估需要开启资源记录器,资源记录器处于关闭状态时,合规规则仅支持查看、停用和删除操作。

    托管合规规则不支持进行修改、停用、启用、删除操作,托管合规规则是由组织合规规则或合规规则包创建的,由组织合规规则创建的托管规则只能由创建规则的组织账号进行修改和删除操作,由合规规则包创建的托管规则可以通过更新合规规则包进行参数修改,且只能通过删除相应合规规则包来进行删除。具体请参见组织合规规则合规规则包

  • 添加、修改组织合规规则和触发规则评估需要开启资源记录器,资源记录器处于关闭状态时,组织合规规则仅支持查看和删除操作。
  • 当前仅用户自行创建的预定义或自定义合规规则支持修正配置,通过组织合规规则或合规规则包创建的托管合规规则不支持修正配置。
  • 基于RFS服务私有模板执行修正的场景下,对应区域的资源栈应至少预留5个配额,否则执行修正可能会因配额不足导致失败。
  • 一个合规规则上只能创建一个修正配置。
  • 当合规规则存在修正配置,则必须删除修正配置并且停用规则后,才可删除此合规规则。
  • 单个合规规则的修正配置最多支持用户手动添加100个修正例外资源,基于设置的修正重试规则被自动添加至修正例外的资源没有配额限制。

仅被资源记录器收集的资源可参与资源评估,为保证资源合规规则的评估结果符合预期,强烈建议您保持资源记录器的开启状态,不同场景的说明如下:

  • 如您未开启资源记录器,则资源合规规则无法评估任何资源数据。历史的合规规则评估结果依然存在。
  • 如您已开启资源记录器,但仅在资源记录器监控范围内勾选部分资源,则资源合规规则仅会评估所选择的资源数据。

关于如何开启并配置资源记录器请参见:配置资源记录器

合规策略

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

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

使用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服务提供的合规策略描述语言,用户可以根据此语法,将合规判断逻辑描述为一个具体的合规策略。

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')}"
      }
    ]
   },
}

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

合规规则

通过指定合规策略和合规策略所应用的范围(如:在某一区域的某些资源)来构成合规规则。

使用JSON表达式来表示一个合规规则定义,如表2所示。

表2 合规规则的定义-JSON表达式格式

参数

定义

限制

说明

id

合规规则唯一标识符

-

-

policy_assignment_type

合规规则类型

-

包含以下两种:

  • builtin:预设策略,此时合规规则需要设置参数policy_definition_id。
  • custom:自定义策略,此时合规规则需要设置参数custom_policy。

如不设置此参数,则默认为预设策略。

name

合规规则的名称

字符串类型,最多64个字符。

规则名称默认复用所选择合规策略的名称,也可自行修改。

name最大长度为64个字符。

description

合规规则的描述

字符串类型,最多512个字符。

指的是规则简介,默认复用所选择合规策略的简介,需自行修改。

description最大长度为512个字符。

period

周期频率

-

包含以下几种:

  • One_Hour: 1小时。
  • Three_Hours: 3小时。
  • Six_Hours: 6小时。
  • Twelve_Hours: 12小时。
  • TwentyFour_Hours: 24小时。

policy_filter

合规规则过滤器,用于过滤范围内的哪些资源参与此规则的评估。

过滤器的属性主要有以下几个:

  • region_id: 区域ID。
  • resource_provider: 指定资源服务。
  • resource_type:指定资源服务下的资源类型。
  • resource_id:资源ID。
  • tag_key:资源标签的键。
  • tag_value:资源标签的值。
policy_filter:Object类型。
  • region_id:字符串类型,最多128个字符,只能包括字母、数字、中划线(-)。
  • resource_provider:字符串类型,最多128个字符,只能包括字母、数字。
  • resource_type:字符串类型,最多128个字符,只能包括字母、数字。
  • resource_id:字符串类型,最多256个字符。
  • tag_key:字符串类型,最多128个字符。
  • tag_value:字符串类型,最多256个字符。
说明:

资源类型(resource_provider)是判断过滤器类型(指定资源/所有资源)的依据,如果policy_filter中资源类型存在,则过滤器类型为“指定资源”;如果policy_filter中资源类型不存在,则过滤器类型为“所有资源”。

因此policy_filter中没有设置单独的过滤器类型属性。

state

合规规则的运行状态

-

包含以下几种:

  • Enabled:运行中,表示此合规规则可用。
  • Disabled:已停用,表示此合规规则已停用。
  • Evaluating:评估中,表示正在使用此合规规则进行资源评估。

created

合规规则的创建时间

-

说明:

时间具有固定格式:遵循ISO8601格式,UTC时区(例如:2018-11-14T08:59:14Z)。

updated

合规规则的更新时间

-

policy_definition_id

合规策略ID

字符串类型,最多64个字符,只能包括字母、数字、中划线(-)。

policy_definition_id指定此规则绑定的合规策略ID。

custom_policy

自定义策略,包含如下属性:

  • function_urn:函数urn。
  • auth_type:调用函数的鉴权方式。
  • auth_value:调用函数的鉴权值。

custom_policy:Object类型 。

  • function_urn:字符串类型,最多1024个字符。
  • auth_type:字符串类型,当前只支持 "agency" 。
  • auth_value:object类型,与auth_type相关,当前只支持如下结构 {"agency_name": value_name},其中value_name为授权给Config服务调用函数的委托的名字。

custom_policy指定此规则绑定的自定义策略的函数URN和调用时的鉴权方式。

parameters

合规策略的规则参数的值

parameters:Object类型
  • key:字符串类型,只能包括字母、数字,当合规规则为自定义合规规则时,最多1024个字符。
  • value:Object类型,根据参数具体的类型,有具体的限制。

合规规则绑定的合规策略,会有相应的规则参数,规则参数的个数、类型以及范围取决于所选择的合规策略。

tags

合规规则的标签列表

-

  • 标签键:最大长度为128个unicode字符。
  • 标签值:最大长度为255个unicode字符。

created_by

合规规则的创建者

-

用户创建(custom)或服务关联委托方式创建。

为避免循环评估的行为,合规规则不支持评估配置审计服务的合规规则和合规规则包两种资源类型。

如下JSON表示了一个用于检查在区域1的弹性云服务器是否具有tag(env:production)标签的预设策略:

{
  "id": "5fcd8696dfb78231e6f2f899",
  "name": "required-tag-check",
  "description": "指定一个标签,不具有此标签的资源,视为“不合规”",
  "policy_filter": {
        "region_id": "regionid_1",
        "resource_provider": "ecs",
        "resource_type": "cloudservers",
        "tag_key": "env",
        "tag_value": "production"
  },
  "period": null,
  "state": "Enabled",
  "created": "2020-12-07T01:34:14.266Z",
  "updated": "2020-12-07T01:34:14.266Z",
  "policy_definition_id": "5fa9f89b6eed194ccb2c04db",
  "parameters": {
        "specifiedTagKey": {
        "value": "a"    },
        "specifiedTagValue": {
        "value": []
    }
  }
  "tags": [],
  "created_by": "custom"
}

如下JSON表示了一个用于检查在区域1的弹性云服务器的自定义合规规则:

{
  "id": "719d8696dfb78231e6f2f719",
  "name": "test_consume_policy",
  "description": "指定一个标签,不具有此标签的资源,视为“不合规”",
  "policy_filter": {
        "region_id": "regionid_1",
        "resource_provider": "ecs",
        "resource_type": "cloudservers",
        "tag_key": null,
        "tag_value": null
  },
  "period": null,
  "state": "Enabled",
  "created": "2022-07-19T01:34:14.266Z",
  "updated": "2022-07-19T01:34:14.266Z",
  "policy_definition_id": null,
  "custom_policy": {  
    "function_urn": "urn:fss:regionid_1:projectidforpolicy:function:default:test_consume_policy:latest",  
    "auth_type": "agency",  
    "auth_value": {"agency_name": "rms_fg_agency"}
  },
  "parameters": {
        "vpcId": {"value": "allowed-vpc-id"}
    }
  }
  "tags": [],
  "created_by": "custom"
}

规则评估结果

当触发规则评估后,会生成相应的评估结果(PolicyState)。

使用JSON表达式来表示一个评估结果,如表3所示。

表3 规则评估结果-JSON表达式格式

参数

定义

说明

domain_id

账号ID

用于区分用户。规则评估结果的domain_id不会为空。

resource_id

评估结果所属资源的ID

-

resource_name

评估结果所属资源的名称

-

resource_provider

资源所属的服务

-

resource_type

资源类型

-

trigger_type

触发类型

包含如下值:

  • resource
  • period

compliance_state

合规结果

包含如下值:

  • Compliant:合规
  • NonCompliant:不合规

policy_assignment_id

评估结果对应合规规则的ID

-

policy_definition_id

评估结果对应合规策略的ID

-

evaluation_time

评估时间戳

-

如下JSON表示了一个不合规的评估结果:

{
  "domain_id": "domainidforpolicy",
  "resource_id": "special-ecs1-with-public-ip-with-tag",
  "resource_name": "ecs1-with-public-ip-with-tag",
  "resource_provider": "ecs",
  "resource_type": "cloudservers",
  "trigger_type": "resource",
  "compliance_state": "NonCompliant",
  "policy_assignment_id": "5fa9f8a2501013093a192b07",
  "policy_definition_id": "5fa9f8a2501013093a192b06",
  "evaluation_time": 1604974757084
}