
# 批量获取SQL防御规则 - ListSqlJobDefendRules
#### 功能介绍
该API用于批量获取SQL防御规则。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/DLI/doc?api=ListSqlJobDefendRules)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限及授权项说明](https://support.huaweicloud.com/api-dli/dli_02_0375.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项 Action | 访问级别 Access Level | 资源类型（\*为必须） Resource Type (\*: required) | 条件键 Condition Key | 别名 Alias | 依赖的授权项 Dependencies |
  |:---|:---|:---|:---|:---|:---|
  | dli:sqldefendrule:list                  | List                                            | -                                                                      | -                                              | -                                      | -                                                 |
     
  
 
#### URI
GET /v1/{project_id}/sql-defend-rules
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 项目编号，用于资源隔离。获取方式请参考[获取项目ID](https://support.huaweicloud.com/api-dli/dli_02_0183.html)。 **约束限制：** 无 **取值范围：** 只能由英文字母和数字组成，且长度为\[1-64\]个字符。 **默认取值：** 无 |
   
表2Query参数 
| 参数         | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| queue_name | 否    | String  | **参数解释：** 队列名称 **约束限制：** 无 **取值范围：** 无 **默认取值：** 无                                                                                                                                                                                 |
| rule_name  | 否    | String  | **参数解释：** 自定义的SQL防御规则名称。 请参考数据湖探索用户指南中"[SQL防御系统规则](https://support.huaweicloud.com/usermanual-dli/dli_01_0612.html)"。 **约束限制：** 最小长度：1 最大长度：32 **取值范围：** 无 **默认取值：** 无 |
| offset     | 否    | Integer | 分页偏移量。                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| limit      | 否    | Integer | 分页个数。                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
#### 请求参数
无
#### 响应参数
**状态码： 201**
表3响应Body参数 
| 参数          | 参数类型                                                                                                      | 描述         |
|:---|:---|:---|
| rules       | Array of [SqlDefendRuleDto] objects | 用户自定义规则信息。 |
| total_count | Integer                                                                                                   | 总个数。       |
   
 表4SqlDefendRuleDto 
| 参数           | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|
| rule_uuid    | String           | 规则唯一标识。 最大长度：64                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| project_id   | String           | 项目编号，用于资源隔离。 最大长度：64                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| rule_name    | String           | 规则名称。 最小长度：1 最大长度：32                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| rule_id      | String           | **参数解释：** 规则ID。请参考[表5]的规则ID。 **约束限制：** 无 **取值范围：** 枚举值的具体含义请参考[表3](https://support.huaweicloud.com/api-dli/dli_02_0380.html#dli_02_0380__table1626674755019)。 - static_0001  - static_0002  - static_0003  - static_0004  - static_0005  - static_0006  - static_0007  - dynamic_0001  - dynamic_0002  - running_0002  - running_0003  - running_0004   **默认取值：** 无 |
| category     | String           | **参数解释：** 规则状态类型。请参考[表5]中的状态类别列。 **约束限制：** 无 **取值范围：** 支持以下枚举值： - static：静态规则  - dynamic：动态规则  - running：熔断规则   **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| engine_rules | Object           | **参数解释：** 规则支持的动作。请参考[表5]中的支持的动作。 **约束限制：** 无 **取值范围：** 支持以下枚举值： - hint：提示  - intercept：拦截  - fuse：熔断   **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| queue_names  | Array of strings | **参数解释：** 队列名称 **约束限制：** 无 **取值范围：** 无 **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| desc         | String           | 用户规则描述。 最大长度：**2000**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| sys_desc     | String           | 系统规则描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| create_time  | Long             | 规则创建时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| update_time  | Long             | 规则更新时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
 表5DLI支持的系统防御规则 
| 规则ID         | 规则名称                        | 说明                                           | 类别      | 适用引擎  | 支持的动作                                            | 取值说明                                                                                                            | 系统默认创建规则 | SQL语句示例                                                                                                                                                                                                                                                                                     | 支持的引擎版本                                                           |
|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|
| dynamic_0001 | Scan files number           | 扫描文件数的限制。                                    | dynamic | spark | 提示 拦截 | 取值范围：1-2000000 默认值：200000                                            | 是        | NA                                                                                                                                                                                                                                                                                          | Spark 3.3.1                                                       |
| dynamic_0002 | Scan partitions number      | 对单个表操作（select，delete，update，alter）涉及的分区数超限制。 | dynamic | spark | 提示 拦截  | 取值范围：1-500000 默认值：5000                                                | 是        | select \* from 分区表                                                                                                                                                                                                                                                                          | Spark 3.3.1                                                       |
| running_0002 | Memory used(MB)             | SQL的占用内存峰值超绝对值限制。                            | running | spark | 熔断                                               | 取值范围：1-8388608                                                                                                  | 否        | NA                                                                                                                                                                                                                                                                                          | Spark 3.3.1                                                       |
| running_0003 | Run time(S)                 | SQL已经运行的时长限制。                                | running | spark | 熔断                                               | 单位：秒 取值范围：1-43200                                                       | 否        | NA                                                                                                                                                                                                                                                                                          | Spark 3.3.1                                                       |
| running_0004 | Scan data(GB)               | 扫描数据量的限制。                                    | running | spark | 熔断                                               | 单位：GB 取值范围：1-10240                                                   | 否        | NA                                                                                                                                                                                                                                                                                          | Spark 3.3.1                                                       |
| running_0005 | Shuffle data(GB)            | Shuffle数据量的限制。                               | running | spark | 熔断                                               | 单位：GB 取值范围：1-10240 默认值：2048 | 是        | NA                                                                                                                                                                                                                                                                                          | Spark 3.3.1 Spark 2.4.5 |
| static_0001  | Count(distinct) occurrences | SQL中count(distinct)出现次数限制。                   | static  | spark | 提示 拦截 | 取值范围：1-100 默认值：10                                                    | 是        | SELECT COUNT(DISTINCT deviceId), COUNT(DISTINCT collDeviceId) FROM table GROUP BY deviceName, collDeviceName, collCurrentVersion;                                                                         | Spark 3.3.1                                                       |
| static_0002  | Not in\<Subquery\>          | SQL中是否使用了not in \<subquery\>语句。              | static  | spark | 提示 拦截  | 取值范围：是/否 默认值：是                                                      | 是        | SELECT \* FROM Orders o WHERE Orders.Order_ID not in (Select Order_ID FROM HeldOrders h where h.order_id = o.order_id); | Spark 3.3.1                                                       |
| static_0003  | Join occurrences            | SQL中的join次数的限制。                              | static  | spark | 提示 拦截   | 取值范围：1-50                                                                                                       | 否        | SELECT name, text FROM table_1 JOIN table_2 ON table_1.Id = table_2.Id                                                                                                                                                                                                                      | Spark 3.3.1                                                       |
| static_0004  | Union occurrences           | SQL中的union all次数的限制。                         | static  | spark | 提示 拦截 | 取值范围：1-100                                                                                                      | 否        | select \* from tables t1 union all select \* from tables t2 union all select \* from tables t3                                                                                                         | Spark 3.3.1                                                       |
| static_0005  | Subquery nesting layers     | 子查询嵌套层数的限制。                                  | static  | spark | 提示 拦截   | 取值范围：1-20                                                                                                       | 否        | select \* from ( with temp1 as (select \* from tables) select \* from temp1);                                                                                                                                  | Spark 3.3.1                                                       |
| static_0006  | Sql size(KB)                | SQL文件大小的限制。                                  | static  | spark | 提示 拦截    | 单位：KB 取值范围：1-1024                                                      | 否        | NA                                                                                                                                                                                                                                                                                          | Spark 3.3.1                                                       |
| static_0007  | Cartesian product           | 多表关联时笛卡尔积的限制                                 | static  | spark | 提示 拦截  | 取值范围：0-1                                                                                                        | 否        | select \* from A,B;                                                                                                                                                                                                                                                                         | Spark 3.3.1                                                       |
   
**状态码： 400**
表6响应Body参数 
| 参数         | 参数类型   | 描述      |
|:---|:---|:---|
| error_code | String | 错误码。    |
| error_msg  | String | 错误描述信息。 |
   
#### 请求示例
无
#### 响应示例
```
{
"rules": [
{
"rule_uuid": "393e3f6a-78f3-450e-87d9-d97cf1768234",
"project_id": "330e068af1334c9782f4226acc00a2e2",
"rule_name": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"rule_id": "dynamic_0001",
"category": "dynamic",
"engine_rules": {
"hint": 11,
"intercept": 22
},
"queue_names": [
"auto_test"
],
"desc": "asfasdfsdadf",
"create_time": 1757141497293,
"update_time": 1757141497293,
"sys_desc": "Scan files number"
}
],
"total_count": 1
}
```
#### 状态码
| 状态码 | 描述       |
|:---|:---|
| 201 | 获取规则成功   |
| 400 | 请求错误。    |
| 500 | 内部服务器错误。 |
   
#### 错误码
调用接口出错后，将不会返回上述结果，而是返回错误码和错误信息，更多介绍请参见[错误码](https://support.huaweicloud.com/api-dli/dli_02_0056.html)。
