---
title: "sql_firewall_config - 数据库代理  V4.3.2 | OceanBase 文档中心"
description: sql_firewall_config sql_firewall_config 用于设置防火墙拦截规则。 说明 该配置项自 4.3.2 版本开始引入。 属性 描述 参数类型 字符串类型 默认值 空字符串 取值范围 特定规则的 JSON 字符串，详细规则见 规则介绍 。 是否重启 ODP 生效 否 规则介绍 JSON …
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*nSAhQbrBXKwAAAAAAAAAAAAADiGDAQ/original) 数据库代理 V 4.3.2

# sql_firewall_config

更新时间：2026-04-14 17:41:09

[编辑](https://github.com/oceanbase/oceanbase-proxy-doc/edit/V4.3.2/zh-CN/400.configuration-management/300.multi-level-configuration-items/2410.sql_firewall_config.md)  

`sql_firewall_config` 用于设置防火墙拦截规则。

#### 说明

该配置项自 4.3.2 版本开始引入。

| 属性 | 描述 |
| --- | --- |
| 参数类型 | 字符串类型 |
| 默认值 | 空字符串 |
| 取值范围 | 特定规则的 JSON 字符串，详细规则见 **规则介绍**。 |
| 是否重启 ODP 生效 | 否 |

## 规则介绍

JSON 字符串中有如下可配置字段：

| 字段 | 描述 |
| --- | --- |
| limitName | 需配置为字符串，表示限流规则的名称，不同限流规则名称可以相同，仅影响限流触发时的信息显示。 |
| qps | 需配置为整数字符串，代表当前规则限制的 SQL 所能达到的 QPS，qps <= 0 代表拦截执行。 |
| rule | JSON 对象，不同属性代表了不同的触发条件，有以下可选属性值：sqlType、keyWords、tableName、scene。如果存在多个触发条件，需要用户的 SQL 满足每个触发条件才表示完整触发。 |
| rule.sqlType | 字符串数据，设置拦截的 SQL 类型。触发条件为用户的 SQL 类型与设置值相同，未配置该字段表示全部拦截。有以下可选值："ALL"（表示全部拦截）、"SELECT"、"UPDATE"、"INSERT"、"REPLACE"、"DELETE"、"MERGE"。 |
| rule.keyWords | 需配置为字符串，支持正则表达式，触发条件为用户 SQL 与表达式规则相匹配。 |
| rule.tableName | 需配置为字符串，支持正则表达式，触发条件为用户 SQL 的表名与配置值相匹配，配置为空表示匹配所有表名。 |
| rule.scene | 需配置为字符串，有如下两个可选值：   - `"Nowhere"`：表示用户没有使用 where 条件。 - `"Uselike"`：表示用户 SQL 中使用了 LIKE 条件。 |
| status | 需配置为字符串，有如下可选值：   - `"OBSERVER"`：表示拦截规则处于观察状态，出现触发规则的 SQL 会在 `obproxy_limit.log` 中打印拦截日志，但不会拦截 SQL 执行。 - `"RUNNING"`：表示拦截规则正常生效，出现触发规则的 SQL 会在 `obproxy_limit.log` 中打印拦截日志，并拦截 SQL 执行。 - `"SHUTDOWN"`：表示拦截规则不生效。 |
| username | 字符串数组，配置限流规则的目标用户，为空或不存在该字段表示目标用户为所有用户，不为空则需要根据用户名匹配目标用户。 |
| inUse | 布尔值，控制是否启用规则，默认为 `true`，为 `false` 表示该规则状态为未启用。 |

配置示例如下：

- 拦截特定类型的 SQL，拦截 SELECT、INSERT、DELETE 类型的 SQL，规则状态未启用

  ```json
  {"limiters":
      [
          {"limitName":"limit_sql_types_1","qps":"0","rule":{"sqlType":["SELECT", "INSERT", "DELETE"]}, "status":"RUNNING","inUse":false}
      ]
  }

  ```
 - 拦截无 where 条件的 SQL，拦截未使用 `where` 关键字的 SELECT、UPDATE、DELETE 类型 SQL 执行，规则状态已启用

  ```json
  {"limiters":
      [
          {"limitName":"limit_no_where_1","qps":"0","rule":{"scene":"Nowhere", "sqlType":["SELECT", "UPDATE", "DELETE"]}, "status":"RUNNING", "inUse":true}
      ]
  }

  ```
 - 拦截使用了 like 子句的 SQL，监控使用 `like` 关键字的 SELECT、UPDATE、DELETE 类型 SQL 执行，将 SQL 记录到 `obproxy_limit.log`，但不会拦截，规则状态已启用

  ```json
  {"limiters":
      [
          {"limitName":"limit_use_like_1","qps":"0","rule":{"scene":"Uselike", "sqlType":["SELECT", "UPDATE", "DELETE"]}, "status":"OBSERVER", "inUse":true}
      ]
  }

  ```
 - 拦截自定义 SQL，拦截 `user1`、`user2` 用户使用 `ORDER BY` 或者 `GROUP BY` 的 SQL 执行，规则状态已启用

  ```json
  {"limiters":
      [
          {"limitName":"limit_key_word_no_order_by_or_group_by","qps":"0","rule":{"keyWords":"ORDER\s+BY|GROUP\s+BY"}, "status":"RUNNING", "username":["user1","user2"],"inUse":true},
          {"limitName":"limit_use_like_1","qps":"0","rule":{"scene":"Nowhere", "sqlType":["SELECT", "UPDATE"]}, "status":"OBSERVER", "inUse":true},
          {"limitName":"limit_no_where_1","qps":"0","rule":{"scene":"Nowhere", "sqlType":["UPDATE", "DELETE"]}, "status":"RUNNING", "inUse":true}
      ]
  }

  ```

## 示例

- 更新防火墙配置

  此处以更新租户级别防火墙配置为例，多级配置项的更新介绍可参见 [配置项说明](https://www.oceanbase.com/docs/common-odp-doc-cn-1000000001600958) 中 **修改配置项**。

  ```sql
  replace into proxy_config(cluster_name, tenant_name, name, value, config_level) values ('test_cluster', 'test_tenant', 'sql_firewall_config', '{"limiters":
      [
          {"limitName":"limit_sql_types_1","qps":"0","rule":{"sqlType":["SELECT", "INSERT", "DELETE"]}, "status":"RUNNING","inUse":false}
      ]
  }', 'LEVEL_TENANT');

  ```
 - 查询防火墙配置

  此处以查看 VIP 级别防火墙配置为例，多级配置项的查看介绍可参见 [配置项说明](https://www.oceanbase.com/docs/common-odp-doc-cn-1000000001600958) 中 **查看配置属性**。

  ```sql
  select * from proxy_config where vid = 0 and vip = '10.10.10.1' and vport = 2 and name = 'sql_firewall_config';

  ```
 - 删除防火墙配置

     - 删除 VIP 级别防火墙配置

      ```sql
      delete from proxy_config where vid = 0 and vip = '10.10.10.1' and vport = 2 and name = 'sql_firewall_config';

      ```
     - 删除全局防火墙配置

      ```sql
      replace into proxy_config(name, value, config_level) values ('sql_firewall_config', '', 'LEVEL_GLOBAL');

      ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
