
# 添加自定义合规规则
#### 操作场景
当Config提供的系统内置预设策略不能满足检测资源合规性的需求时，您可以通过编写FunctionGraph函数代码，添加自定义策略来完成复杂场景的资源审计。
自定义策略是一个用户开发并发布在[函数工作流（FunctionGraph）](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0110.html)上的函数。将合规规则和函数相关联，函数接收Config发布的事件，从事件中接收到规则参数和Config服务收集到的资源属性；函数评估该规则下资源的合规性并通过Config的OpenAPI回传Config服务合规评估结果。合规规则的事件发送因触发类型为配置变更或周期执行而异。
本章节指导您如何通过自定义策略来添加资源合规规则，主要包含如下步骤：
1. [创建FunctionGraph函数]；
2. [添加自定义合规规则]。
 
#### 约束与限制
- 每个账号最多可以添加500个合规规则。
- 添加、修改、启用合规规则和触发规则评估需要开启资源记录器，资源记录器处于关闭状态时，合规规则仅支持查看、停用和删除操作。
![](https://support.huaweicloud.com/usermanual-rms/public_sys-resources/warning_3.0-zh-cn.png)
仅被资源记录器收集的资源可参与资源评估，为保证资源合规规则的评估结果符合预期，强烈建议您保持资源记录器的开启状态，不同场景的说明如下：
- 如您未开启资源记录器，则资源合规规则无法评估任何资源数据。历史的合规规则评估结果依然存在。
- 如您已开启资源记录器，但仅在资源记录器监控范围内勾选部分资源，则资源合规规则仅会评估所选择的资源数据。
关于如何开启并配置资源记录器请参见：[配置资源记录器](https://support.huaweicloud.com/usermanual-rms/rms_04_0200.html)。
 #### 创建FunctionGraph函数
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?&locale=zh-cn#/serverless/dashboard)。
2. 在左侧的导航栏选择"函数 \> 函数列表"。
3. 单击右上方的"创建函数"，进入"创建函数"页面。
4. 选择"创建空白函数"，"函数类型"选择"事件函数"，并配置函数名称、IAM委托等其他参数。 
   IAM委托授权给函数工作流（FunctionGraph），且需要包含权限"rms:policyStates:update"。
   
   
5. 配置完成后单击"创建函数"，页面跳转至代码配置页面，继续配置代码源。
6. 在代码框中写入评估函数内容，完成后单击"部署"。 
   评估函数的代码示例可参考[示例函数(Python)](https://support.huaweicloud.com/usermanual-rms/rms_05_0504.html)。
   
   
7. 选择"设置"，按需修改常规设置中的"执行超时时间"和"内存"，并配置"并发"。
8. 完成后单击"保存"。 
   具体请参见[创建事件函数](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_1441.html)。
   
   
 
 #### 添加自定义合规规则
1. 登录[配置审计控制台](https://console.huaweicloud.com/rms/?&locale=zh-cn#/overview)。
2. 单击左侧的"资源合规"，进入"资源合规"页面。
3. 单击页面中部的"添加规则"，进入"基础配置"页面。
4. "策略类型"选择"自定义策略"，配置相关参数并进行授权，配置完成后单击"下一步"。 
   表1基础配置参数说明 
   | 参数              | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   |:---|:---|
   | 策略类型            | 选择"自定义策略"。 允许用户通过自定义策略来创建合规规则。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 规则名称            | 合规规则的名称，不能与已存在的合规规则名称重复。 合规规则名称仅支持数字、字母、下划线和中划线，最大长度64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 规则简介            | 合规规则的简介，目前对规则简介内容的字符类型不做限制，最大长度512个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | FunctionGraph函数 | 用户自定义策略执行函数的URN。 创建FunctionGraph函数请参见[创建FunctionGraph函数](https://support.huaweicloud.com/usermanual-rms/rms_05_0404.html#rms_05_0404__section14111111694611)。 说明： 如何获取FunctionGraph函数的URN可参考如下方法： - 进入函数工作流控制台，在左侧的导航栏选择"函数 \> 函数列表"，单击列表中需使用函数操作列的"复制URN"即可获取。  - 进入函数工作流控制台，在左侧的导航栏选择"函数 \> 函数列表"，单击列表中需使用函数的函数名称，进入函数详情页，在函数概述部分右侧显示"函数URN"。                                                                                                                                                                                               |
   | 授权              | 此处的授权为**委托授权**，授权函数工作流（FunctionGraph）的只读权限和调用权限给Config服务，允许自定义合规规则查询函数工作流以及将事件发送至函数工作流。 说明： - **一键委托** ：将为您快速创建一个名为"rms_custom_policy_agency"的委托权限，该权限是可以让自定义合规规则正常工作的权限，包含调用函数工作流（FunctionGraph）的获取函数和异步执行函数的权限。  - **已有委托** ：您可自行在统一身份认证服务（IAM）中创建委托，并进行自定义授权，但必须包含可以让自定义合规规则正常工作的权限（调用函数工作流（FunctionGraph）的获取函数和异步执行函数的权限），授权对象为配置审计（Config），授权内容为： ``` { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "functiongraph:function:invokeAsync", "functiongraph:function:getConfig" ] } ] } ``` 创建委托详见[《统一身份认证服务用户指南》](https://support.huaweicloud.com/usermanual-iam/iam_06_0004.html)。    |
      
   图1基础配置   
   ![](https://support.huaweicloud.com/usermanual-rms/zh-cn_image_0000001935313650.png "点击放大")
   
   
5. 进入"规则参数"页面，规则参数配置完成后，单击"下一步"。 
   图2规则参数
   ![](https://support.huaweicloud.com/usermanual-rms/zh-cn_image_0000002496421365.png "点击放大")
   
   表2合规规则参数说明 
   | 参数       | 说明                                                                                                                                                                                                                                                                                                                                                                                          |
   |:---|:---|
   | 触发类型     | 用于触发资源合规规则。 触发类型有： - **配置变更：**在指定的云资源发生更改时触发规则评估。  - **周期执行：**按照您设定的频率运行。                                                                                                |
   | 过滤器类型    | 用于指定资源类型参与规则评估。 过滤器类型分为： - **指定资源：**指定资源类型下的所有资源均参与规则评估。  - **所有资源：**账号下的所有资源均参与规则评估。   仅当"触发类型"为"配置变更"时需配置此参数。                                                       |
   | 指定资源范围   | 过滤器类型选择"指定资源"后，需选择指定资源范围。 - **服务：**选择资源所属的服务；  - **资源类型：**选择对应服务下的资源类型；  - **区域：**选择资源所在的区域。   仅当"触发类型"为"配置变更"，且"过滤器类型"为"指定资源"时需配置此参数。 |
   | 过滤范围（可选） | 使用过滤范围可指定资源类型下的某个具体资源参与规则评估。 过滤范围开启后您可通过资源ID、生效标签和排除标签指定过滤范围。 当"触发类型"为"配置变更"时，您可以根据需要选择配置此参数。                                                                                                                                                                                                                                   |
   | 周期频率     | 设置合规规则周期执行的频率。 可选项：1小时、3小时、6小时、12小时、24小时。 仅当"触发类型"为"周期执行"时需配置此参数。                                                                                                                                                                                                                                                                 |
   | 规则参数     | 自定义策略的规则参数最多可以设置10个，由您自行配置。                                                                                                                                                                                                                                                                                                                                                                 |
   | 标签       | 单击"添加新标签"，输入标签键和标签值，为合规规则添加标签。每个合规规则最多可以添加20个标签。 - 标签键不能为空，可以包含任意语种的字母、数字和空格，以及_.:+-@字符，但首尾不能包含空格，且不能以_sys_开头。长度不超过128个字符。  - 标签值可以为空，可以包含任意语种的字母、数字和空格，以及_.:+-@字符，但首尾不能包含空格。长度不超过255个字符。                    |
      
   
   
6. 进入"确认规则"页面，确认规则信息无误后，单击"提交"按钮，完成自定义合规规则创建。 
   ![](https://support.huaweicloud.com/usermanual-rms/public_sys-resources/note_3.0-zh-cn.png)
   合规规则创建后会立即自动触发首次评估。
   
   
 
#### 操作验证
返回"资源合规"页面，在"规则"页签下的列表中显示刚创建的合规规则，且策略类型显示为"自定义策略"，则表示自定义合规规则添加成功。
![](https://support.huaweicloud.com/usermanual-rms/zh-cn_image_0000002532674738.png "点击放大")
#### 相关文档
- [自定义策略的规则参数最多可以设置多少个？](https://support.huaweicloud.com/rms_faq/rms_08_0600.html#section5)
- [单个账号最多支持创建多少条合规规则？](https://support.huaweicloud.com/rms_faq/rms_08_0600.html#section6)
 
