sql防御功能
更新时间:2025-10-22
概述
Clickhouse中增加SQL防御能力,基于用户可理解的SQL防御策略,实现对典型大SQL、低质量SQL的主动防御,包括事前拦截和事中熔断,并不强制改变用户的SQL提交方式、SQL语法,对业务零改动且易落地。
- 支持管理员界面化配置SQL防御策略,同时可支持防御规则的查询和修改。
- Clickhouse引擎在进行SQL业务响应、执行过程中,基于SQL防御策略进行主动防御行为。
- 管理员可将SQL防御行为在“记录”、“拦截”、“熔断”选项之间进行灵活切换,后端系统会将发生的SQL防御事件实时写入到防御审计日志中。运维人员可进行日志分析,评估现网SQL质量,提前感知潜在SQL风险,并做出有效预防措施。
SQL防御规则包含以下类型:
- 静态拦截规则:基于纯粹的SQL语法规则进行拦截或提示。
- 运行熔断规则:基于SQL语句运行时的系统动态信息(如CPU、内存、IO等)的规则进行阻断。
对于静态拦截规则,系统在SQL请求满足条件时,可对该请求进行中止或者提示处理。对于运行熔断规则,系统在SQL请求满足条件时,会阻断该SQL任务。
防御规则
新增规则
- 登录MapReduce控制台,在集群列表中选择对应的集群 ID/名称点击进入集群详情页。
- 在左侧导航选择SQL防御> 防御规则进入防御规则页面。
- 在防御规则界面单击新增规则按钮,输入集群密码进行身份验证(每次登陆只验证一次),填写新增规则配置项后确定。
表1 新增规则配置项说明
| 配置项名称 | 说明 |
|---|---|
| 规则名称 | 输入新增防御规则的名称。 |
| 规则ID | 下拉选择规则 ID。 |
| 用户 | 所有用户/指定用户 |
| 服务与动作 | 单击新增按钮,填写服务与动作配置项。 |
| 开启白名单 | 选择是否开启白名单按钮,开始后需要对队列白名单和作业白名单进行配置。 |
| 队列白名单 | 选择开启白名单后,需选择。所有队列/指定队列。 |
| 作业白名单 | 选择开启白名单后,需选择。所有作业/指定作业。 |
规则列表
新增的防御规则以列表形式展示,支持按照规则名称进行检索,同时通过更新时间可以对列表进行排序。查看系统防御规则,单击新增规则按钮旁边的查看系统SQL防御规则可查看系统SQL防御规则。
表2 防御规则列表项说明
| 列表项名称 | 说明 |
|---|---|
| 规则名称 | SQL 防御规则的名称。 |
| 规则id | 系统为规则分配的唯一标识编号,用于区分规则。 |
| 用户 | 创建该规则的用户名。 |
| 规则参数 | 配置规则生效的参数值。 |
| 规则白名单 | |
| 更新时间 | 显示规则最后一次修改的时间。 |
| 操作 |
