hhdb数据库介绍(10-42)

安全

SQL防火墙

管理平台提供的SQL防火墙功能可为用户拦截高危SQL、误操作SQL等,提升系统安全性。

同时防火墙提供观测功能,可在开启新规则前,通过开启观测状态,判断新规则对业务的影响程度。开启观测状态后,计算节点不会对SQL进行拦截,但会进行记录,双击观测状态图标,可跳转至SQL命中记录页面。
在这里插入图片描述

  • SQL防火墙功能目前只支持开启管理平台提供的可拦截SQL模板,暂不支持自定义SQL

  • 可单个或批量启用、关闭拦截规则,启用或关闭都需要动态加载后才能生效。生效后在计算节点中执行已拦截的SQL会提示“ERROR 10029 (HY000): You are using SQL_Firewall, this sql isn't allowed”

  • 目前管理平台提供40条可拦截SQL模板,对具体拦截过的SQL可在“事件->审计日志->安全防护”中查看

  • SQL防火墙功能中增加一条拦截规则,支持对where子句中不带分片字段的SQL语句进行拦截,提升系统查询效率

  • 开启观测状态后,图标会变为蓝色。对正在启用状态的规则,开启观测状态,会自动关闭规则,动态加载后生效。

  • 观测状态下,命中的SQL记录,可双击规则左侧的2images-586 图标,跳转至命中记录页面,该页面记录当前规则命中SQL的逻辑库、SQL语句摘要、命中次数、最新命中时间、最新执行的客户端IP、最新执行的用户。

管理平台在安全->SQL防火墙对应显示“ 不允许where条件不带分片字段”SQL防火墙规则,如下图:
在这里插入图片描述
该规则默认关闭,打开后,状态更新为拦截中,需动态加载生效,如下图:
在这里插入图片描述
观测状态默认关闭,点击观测图标后,状态更新为观测中,图标变为蓝色,需动态加载生效,如下图:
在这里插入图片描述
双击蓝色图标,跳转至新页面,显示该规则下所有命中的SQL及对应信息。
在这里插入图片描述
若该规则拦截中,则在计算节点服务端执行的所有where条件未带分片字段(子表为关联字段)的SQL且操作的表为水平分片表或子表时都会拦截。

示例:
创建水平分片表teacher,分片字段为id,当该规则拦截中,where条件不带分片字段如下图:在这里插入图片描述

同时事件->审计日志->安全防护界面可以看到相关拦截日志:
在这里插入图片描述
SQL防火墙功能中增加10条新的拦截规则,分别如下:
create_no_pri_index_disallow不允许无主键的表创建,默认为开启状态

创建表test无主键,如下图:在这里插入图片描述

join_sql_limit_N不允许单条SQL内的JOIN次数超过限制次数的语句执行(子查询拆分后可能也会存在内部join),默认为3,及规则显示为join_sql_limit_3,可对次数进行编辑

表左连接4次,如下图:在这里插入图片描述

set_logical_operators_disallow不允许SET子句的右值含有逻辑运算符,SET子句包含INSERT、UPDATE、INSERT ... ON DUPLICATE KEY UPDATE

表执行UPDATE,SET语句采用AND逻辑运算符,如下图:在这里插入图片描述

no_column_compare_disallow不允许where条件中不包含表内字段比较的语句执行

表WHERE条件中不包含表内字段,如下图:在这里插入图片描述

select_where_always_false_disallow不允许WHERE条件永假的SELECT

表执行SELECT,WHERE条件为永假,如下图:
在这里插入图片描述

update_where_always_false_disallow不允许WHERE条件永假的UPDATE

表执行UPDATE,WHERE条件为永假,如下图:
在这里插入图片描述

delete_where_always_false_disallow不允许WHERE条件永假的DELETE

表执行DELETE,WHERE条件为永假,如下图:
在这里插入图片描述

create_table_as_select_disallow不允许执行CREATE TABLE [AS]...SELECT语句

表采用CREATE AS SELECT语法建表,如下图:在这里插入图片描述

drop_pri_index_disallow不允许删除主键

表删除主键时会被拦截,如下图:
在这里插入图片描述
删除主键字段时,也会拦截,如下图:
在这里插入图片描述
若有唯一的主键,drop primary key,必须跟随add column primary key,或者add primary key;
若有drop唯一的主键字段,alter table drop column,必须跟随add column primary key,或者add primary key

max_limit_offset_1m不允许limit偏移量超过限制行数的语句执行,单位m百万行,默认限制的偏移量数为100万,可对数字进行编辑,单位为百万。

表偏移量设置为1m时,两种语法都可限制,如下图:
在这里插入图片描述
在这里插入图片描述
表偏移量设置为2m时,如下图:
在这里插入图片描述
在这里插入图片描述
SQL防火墙功能中增加一条拦截规则:no_inplace_ddl_disallow不允许非inplace模式的DDL语句执行,推荐替换为onlineDDL。

开启相应防火墙时,支持inplace模式的DDL未采用inplace模式会被拦截,如下图:
在这里插入图片描述

posted @   恒辉信达  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示