Logo
数据库防火墙算法

数据库防火墙算法 #

匹配算法 #

风险 DDL 匹配算法 #

类型:RISK_DDL

可配置属性:

属性名称数据类型说明默认值
truncate-tableboolean是否匹配 TRUNCATE TABLE 语句true
drop-tableboolean是否匹配 DROP TABLE 语句true
alter-tableboolean是否匹配 ALTER TABLE 语句true

风险 DML 匹配算法 #

类型:RISK_DML

可配置属性:

属性名称数据类型说明默认值
full-table-updateboolean是否匹配全表更新语句true
full-table-deleteboolean是否匹配全表删除语句true

说明:全表更新、全表删除指不包含 WHERE 条件的 UPDATE 和 DELETE 语句。

关联查询匹配算法 #

类型:JOIN_QUERY

可配置属性:

属性名称数据类型说明默认值
max-allowed-join-table-countint最大允许关联表数量3

说明:不区分 JON 类型,如 LEFT JOIN、RIGHT JOIN 等。

子查询匹配算法 #

类型:SUBQUERY

可配置属性:

属性名称数据类型说明默认值
max-allowed-subquery-countint最大允许子查询嵌套层数1

分片条件匹配算法 #

类型:SHARDING

可配置属性:

属性名称数据类型说明默认值
select-without-sharding-columnboolean是否匹配不带分片键的 SELECT 语句true
update-without-sharding-columnboolean是否匹配不带分片键的 UPDATE 语句true
delete-without-sharding-columnboolean是否匹配不带分片键的 DELETE 语句true

说明:INSERT 语句是强制需要分片键的,无需通过数据库防火墙规则检查,因此不包含在此算法内。

缺少 WHERE 条件匹配算法 #

类型:MISSING_WHERE_CONDITION

可配置属性:

属性名称数据类型说明默认值
columnsstring要匹配的列
insertboolean是否匹配 INSERT 语句true
selectboolean是否匹配 SELECT 语句true
updateboolean是否匹配 UPDATE 语句true
deleteboolean是否匹配 DELETE 语句true

说明:若 DML 语句中未包含 columns 对应列的 where 条件,则匹配成功。

HOST 地址匹配算法 #

类型:HOST

可配置属性:

属性名称数据类型说明默认值
blacklistString黑名单,表示此算法要匹配的地址
whitelistString白名单,表示此算法要放行的地址

说明:

  1. 声明算法时,blacklist 和 whitelist 至少需要定义一种,不能同时为空;
  2. 仅支持 IP 地址,如 ‘127.0.0.1’,不支持主机名方式;
  3. 黑白名单均支持多个元素,以逗号分隔,如 ‘127.0.0.1, 10.9.100.5’;
  4. 算法规则:当前地址在黑名单或【白名单不为空且当前地址不在白名单中】,即为匹配成功;
  5. 若黑名单和白名单存在重复元素,黑名单优先级更高。

用户名匹配算法 #

类型:USERNAME

可配置属性:

属性名称数据类型说明默认值
blacklistString黑名单,表示此算法要匹配的用户名
whitelistString白名单,表示此算法要放行的用户名

说明:

  1. 声明算法时,blacklist 和 whitelist 至少需要定义一种,不能同时为空;
  2. 仅匹配用户名称,不区分登录地址;
  3. 黑白名单均支持多个元素,以逗号分隔,如 ‘root, sharding’;
  4. 算法规则:当前用户在黑名单或【白名单不为空且当前用户名不在白名单中】,即为匹配成功;
  5. 若黑名单和白名单存在重复元素,黑名单优先级更高。

角色匹配算法 #

类型:ROLE

可配置属性:

属性名称数据类型说明默认值
blacklistString黑名单,表示此算法要匹配的角色
whitelistString白名单,表示此算法要放行的角色

说明:

  1. 声明算法时,blacklist 和 whitelist 至少需要定义一种,不能同时为空;
  2. 黑白名单均支持多个元素,以逗号分隔,如 ‘role_dml, admin’;
  3. 算法规则:当前用户的角色有任意一个在黑名单中或【白名单不为空且当前用户的全部角色不在白名单中】,即为匹配成功;
  4. 若黑名单和白名单存在重复元素,黑名单优先级更高。

禁止加密字段关联查询算法 #

类型:ENCRYPT_JOIN_QUERY

无可配置属性:

说明:

  1. 配置该算法后,会禁止加密字段执行关联查询

数据库防火墙动作算法 #

日志记录 #

类型:LOG

可配置属性:

属性名称数据类型说明默认值
log-levelString输出日志级别,支持 DEBUG, INFO, WARN, ERRORWARN

说明:通过日志记录数据库防火墙事件,包含 db、user、host 及匹配的策略名称,如:

[WARN ] date time [THREAD] AUDIT - log by strategy: risk_dml_strategy db: sharding_db user: root host: 127.0.0.1 

拦截 #

类型:BLOCK

说明:

  1. 通过日志记录数据库防火墙事件并进行拦截(抛出异常),日志包含 db、user、host 及匹配的策略名称,如:
[WARN ] date time [THREAD] AUDIT - block by strategy: risk_dml_strategy db: sharding_db user: root host: 127.0.0.1 
  1. 拦截记录日志统一为 WARN 级别,暂不支持修改。