hhdb数据库介绍(10-40)

安全

安全菜单中主要为对计算节点连接与执行的安全防护,以及对相关组件密码的安全管理,提升业务系统的安全性。

数据脱敏

数据脱敏支持对密级程度较高的列、在进行SQL查询或日志输出时进行密文结果展示。数据脱敏规则支持按逻辑库、表信息和脱敏列的过滤,其中逻辑库、表信息为精确匹配,脱敏列为模糊匹配。
在这里插入图片描述
数据脱敏规则支持按逻辑库、表信息和脱敏列的过滤,其中逻辑库、表信息为精确匹配,脱敏列为模糊匹配。

数据脱敏规则列表展示了每条规则的详情信息,包括逻辑库、表信息、脱敏列、列名匹配规则、替换方式、替换内容、替换信息、应用于SQL查询结果、生效的用户范围、生效的主机名范围、应用于日志输出内容、生效的日志范围、例外库对象和例外表对象。其中逻辑库、表信息、列名匹配规则、应用于SQL查询结果、应用于日志输出内容列可排序。

添加脱敏规则

一个脱敏规则中可以同时对多个逻辑库的多张表的多个列的值进行全部脱敏或部分脱敏。

(一)功能入口: “安全->数据脱敏->添加规则”
在这里插入图片描述

  • 逻辑库:列出当前管理平台上所有的逻辑库(包括已创建但未加载过的逻辑库)。可选择一个或多个或全部选择;也可勾选“全部(含新增项),代表之后新增的逻辑库自动适用此规则,不必修改规则添加逻辑库。

  • 表信息:选择逻辑库后,会自动带出相关逻辑库下的所有表(包括已定义未创建的表),显示为“库.表”的形式。可选择一个或多个或全部选中;也可勾选“全部(含新增项),代表之后新增的表自动使用此规则,不必修改规则添加表。当逻辑库勾选“全部(含新增项)”时,表信息将自动勾选“全部(含新增项)”,不能选择部分表。

  • 脱敏列:填写需被脱敏的对象列名称,与配置的列名匹配的规则一起决定了需要脱敏的列。

  • 列名匹配规则:可以选择“列名全匹配”、“列名前缀匹配”或“列名后缀匹配”。若选择“列名全匹配”,会对列名符合全量匹配的脱敏列对象进行脱敏;若选择“列名前/后缀匹配”,会对列名符合前/后缀条件的脱敏列对象进行脱敏。

    • 当列名匹配规则选择的“列名全匹配”,则表述会对填写的脱敏列名进行全量匹配脱敏。例如脱敏列填入的列名为“password”,系统只脱敏选择的表中名为“password”的列;当选择“列名前缀匹配”,脱敏列填入如“pass”,系统将脱敏选择的表中所有以“pass”开头的列,包括名为“pass”的列;当选择“列名后缀匹配”,脱敏列填入如“word”,系统将脱敏选择的表中所有以“word”结尾的列,包括名为“word”的列。

    • 支持同时填写多个脱敏列,用英文逗号隔开。

    • 脱敏规则冲突:同库同表同列存在多项脱敏规则,保存配置时会判断冲突。举例说明:先后添加前缀匹配pass,前缀匹配passw,此时pass重复,故会给出规则冲突的报错。

    • 匹配规则的优先级为:“列名全匹配>列名前缀匹配>列名后缀匹配”。举例,当对一个列名为“password”进行脱敏,先后添加前缀匹配pass,后缀匹配word的脱敏匹配规则;此时脱敏配置规则并不会报规则冲突,脱敏功能会以“列名全匹配>列名前缀匹配>列名后缀匹配”的原则进行脱密处理。

  • 替换方式:可以选择“全部替换”、“关键词之后”、“关键词之前”、“按位数替换”、“随机字符替换”、“乱序替换”或“正则表达式”。

    • 选择“全部替换”,脱敏列的值全部按“替换内容”脱敏显示;
    • 选择“关键词之后”,脱敏列关键词之后的内容按“替换内容”脱敏显示,关键词之前按原文显示。关键词信息内容最大长度256位;
    • 选择“关键词之前”,脱敏列关键词之前的内容按“替换内容”脱敏显示,关键词之后按原文显示。关键词信息内容最大长度256位;
    • 选择“按位数替换”,脱敏列位数匹配范围内的数据按“替换内容”脱敏显示,位数匹配之外的按原文显示。第()位和替换()位数的最高数值为1000。当起点位数和替换位数超出实际字符数时,循环匹配(例如:字段长度为11时,左起15位即为右起第4位);
    • 选择“随机字符替换”,脱敏列的内容将会替换成随机字符;
    • 选择“乱序替换”,脱敏列的字符将会被打乱顺序后显示;
    • 选择“正则表达式”,脱敏列匹配上正则表达式的内容按“替换内容”脱敏显示,其余字符按原文显示,可选择一次匹配或多次匹配;
  • 替换内容:默认“*”,可以填写任意字符,脱敏列替换范围内的字符将替换成该字符,当选择“随机字符替换”或“乱序替换”,该输入框将隐藏,无需填写。。

  • 应用于SQL查询结果:选择“ON”,可以接着填写“生效的用户范围”和“生效的主机名范围”;选择“OFF”,不需要填写“生效的用户范围”和“生效的主机名范围”。

  • 生效的用户范围:显示当前管理平台上所有的数据库用户(包括已创建但未加载过的用户;不包括当前计算节点连接用户,防止影响数据迁移。),可以不填写;也可选择一个或多个或全部选择;也可勾选“全部(含新增项),代表之后新增的用户自动适用此规则,不必修改规则添加用户。

  • 生效的主机名范围:默认为空,代表不对任何主机名生效。可填写IP或IP段,或换行填写多个IP或IP段。

  • 应用于日志输出内容:选择“ON”,可以接着选择“生效的日志范围”;选择“OFF”,不需要选择“生效的日志范围”。

  • 生效的日志范围:包括hotdb.log,hotdb-sqlaudit.log,hotdb-unusualsql.log及其他。可选择一项或多项或全部选择,为必选项。其他包括sql.log,hotdb-connection.log,hotdb-audit.log。

  • 是否添加例外:选择“ON”,可以接着选择“例外库对象”和“例外表对象”;选择“OFF”,不需要选择“例外库对象”和“例外表对象”。

  • 例外库对象/例外表对象:当对多个逻辑库和表的列配置了脱敏规则,但要排除其中的一些特殊库或特殊表,可以进行此项配置。分为两种情况:

  • 当逻辑库选择“全部(含新增项)”、表信息选择“全部(含新增项)”时并且是否添加例外选择“ON”,会同时出现“例外库对象”和“例外表对象”。此时“例外库对象”为当前管理平台上所有的逻辑库(包括已创建但未加载过的逻辑库),可选择一个或多个或全部选择。“例外表对象”为勾选的逻辑库之外的逻辑库下所有的表,可选择一个或多个或全部选择。

  • 当逻辑库没有选择“全部(含新增项)” 、而表信息选择“全部(含新增项)”时并且是否添加例外选择“ON”时,只会出现“例外表对象”。此时“例外表对象”会列出所选逻辑库下的所有表,可选择一个或多个或全部选择。

“依据如上要求填写脱敏规则,填写完成后点击【保存】按钮,保存成功即自动回到数据脱敏页面。此时,“仅加载当前配置”按钮在这里插入图片描述和总控“动态加载”按钮在这里插入图片描述都会自动提示“RELOAD”,点击任一“RELOAD”成功后,对历史连接和新连接都立即生效。

(三)批量添加

功能入口: “安全->数据脱敏->批量操作->批量添加”

规则字段较多,本截图分成以下三张展示,实为一张。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击“在这里插入图片描述”可依次添加一条脱敏规则,点击“在这里插入图片描述”删除当前脱敏规则。一次最多添加50条规则。

批量添加的规则与单个添加的规则遵循同样的判断逻辑,此处不再赘述。

编辑脱敏规则

功能入口: “安全->数据脱敏->编辑规则”
在这里插入图片描述
脱敏规则也可批量编辑,需要先选择多个脱敏规则。

功能入口: “安全->数据脱敏->批量操作->批量编辑”

编辑或批量编辑的规则填写与单个或批量添加的规则填写遵循同样的说明逻辑。在编辑“保存”时,同样会判断是否存在脱敏规则冲突,“保存”成功后,“仅加载当前配置”按钮和总控“动态加载”会提示“RELOAD”,点击任一“RELOAD”成功后,对历史连接和新连接都立即生效。

删除脱敏规则

功能入口: “安全->数据脱敏->删除规则”
在这里插入图片描述
脱敏规则也可批量删除,需要先选择多个脱敏规则。

功能入口: “安全->数据脱敏->批量操作->批量删除”

确认删除后,“仅加载当前配置”按钮和总控“动态加载”按钮会自动提示“RELOAD”,点击任一“RELOAD”成功后,对历史连接和新连接都立即生效。

规则生效说明

(一)生效的用户范围和生效的主机范围

“生效的用户范围”和“生效的主机名范围”为或关系,代表用户在连接计算节点时,只要当前用户在“生效的用户名范围”内或者用户所在主机在“生效的主机名范围”规则都将生效。

例有三个用户:user1@192.168.200.201, user1@%, user2@%。

脱敏规则配置的“生效的用户范围”为:user1@192.168.200.201, 生效的主机名范围为:192.168.200.202,此时,user1通过192.168.200.201连接计算节点时,脱敏规则生效;user1通过192.168.200.202连接计算节点时,脱敏规则生效;user1通过192.168.200.203连接计算节点时,脱敏规则不生效;user2通过192.168.200.201连接计算节点时,脱敏规则不生效;user2通过192.168.200.202连接计算节点时,脱敏规则生效;user2通过192.168.200.203连接计算节点时,脱敏规则不生效。

(二)SELECT查询

用户连接计算节点进行SELECT查询的列有配置“应用于SQL查询结果”的脱敏规则,并且用户在“生效的用户范围”或者用户所在的主机在“生效的主机名范围” 时,查询结果中对应的列将被替换成配置的“替换内容”(默认为******)显示。SELECT查询语句包括:

a)SELECT * FROM …

b)SELECT column1, column2, … FROM …

c)SELECT column1, column2, … FROM tableA [inner/left/right] JOIN tableB …

d)SELECT * FROM tableA UNION [ALL] SELECT * FROM tableB

e)SELECT column1, column2, … FROM tableA UNION [ALL] SELECT column1, column2, … FROM tableB

SELECT语句中对列名套用函数,如MIN,MAX,COUNT,DISTINCT等查询结果不进行脱敏;对参与计算的脱敏列,计算结果不进行脱敏;除上述列举外的其它SELECT查询语句也不进行脱敏。

管理端(3325)执行show processlist和show @@lastsql,以及服务端(3323)执行show processlist 命令时,涉及的脱敏列的显示都不进行脱敏。

当同一列同时匹配到一个“列名前缀匹配”的脱敏规则和一个“列名后缀匹配”的脱敏规则时,以“列名前缀匹配”的脱敏规则中的替换内容进行脱敏。

脱敏列的值为NULL时,脱敏后仍然为NULL;脱敏列的值为字符串空,将正常脱敏。

可以通过多条脱敏规则对同一张表进行脱敏,取多条脱敏规则的合集,如下时同时设置了对表wj1.tb1中列id_card_code和列phone进行脱敏,分别设置了列id_card_code按位数替换为*规则,同时设置了列phone的全部替换为*规则,在查询时会对根据关于此表设置的脱敏规则进行脱敏显示。
在这里插入图片描述
进行select查询结果如下,其中id_card_code和phone列都进行了相应的脱敏:
在这里插入图片描述
(三)日志输出

用户连接计算节点服务端执行相关INSERT/DELETE/UPDATE/SELECT语句,在记录到相应日志时,如有配置相应的脱敏规则,也会进行脱敏处理。

  • hotdb.log,如错误语法SQL、insert主键冲突、外键数据删除失败、外键约束不满足插入数据失败、hint insert语句、超时的update/delete语句、recordDeadLockSQL参数开启的死锁语句、recordHotDBErrors参数开启记录的语句等,包括但不限于以上SQL记录中涉及的脱敏列全部脱敏显示。

在这里插入图片描述

  • hotdb-sqlaudit.log,根据审计的匹配规则,如有审计到select/update/insert/delete语句,以上SQL记录中涉及的脱敏列全部脱敏显示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • hotdb-unusalsql.log,如insert主键冲突、外键数据删除失败、外键约束不满足插入数据失败、Truncated incorrect DECIMAL value、数据类型转换或隐式转换导致数据截断、删除不存在的记录、update超过10000行、delete超过10000行、执行超时的update语句、执行超时的delete语句等,包括但不限于以上SQL记录中涉及的脱敏列全部脱敏显示。

在这里插入图片描述

  • sql.log,server.xml中以下参数开启后,涉及脱敏列记录的语句会进行脱敏显示:
recordSQLSyntaxError/recordCrossDNJoin/recordUNION/recordSubQuery/recordLimitOffsetWithoutOrderby/recordSQLKeyConflict/recordSQLUnsupported/recordMySQLWarnings/recordHotDBWarnings
  • hotdb-connection.log和hotdb-audit.log日志中未捕获SQL语句,暂无脱敏信息。

(四)其他特殊说明

  • 在管理平台上使用mysqldump作为数据来源进行数据迁移时,会判断当前计算节点的连接用户(计算节点集群组配置的用户)是否存在匹配的数据脱敏规则,如果有,系统将提示:“当前源计算节点连接用户root存在数据脱敏规则,无法通过mysqldump导出原数据,请修改迁移数据来源或删除连接用户的脱敏规则。”

  • 用户使用mysqldump或select … into … outfile的方式导出数据时,如果连接计算节点的用户在“生效的用户范围”或者用户所在的主机在“生效的主机名范围”时且“应用于SQL查询结果”,则导出脱敏之后的数据。

  • 无法正常解析语句(如语法错误的语句),表解析不出来会无法匹配规则 也即不会脱敏。 空字符串根据实际字符串长度脱敏,字符串长度不为0均脱敏。 NULL值不脱敏。

  • 空字符串根据实际字符串长度脱敏,字符串长度不为0均脱敏。

  • NULL值不脱敏。

  • 选择“按位数替换”时,当数据位数不足脱敏位数时,会自动反向查找补位脱敏。

  • 示例如下:对a@@hhdb.com数据为例进行脱敏,替换内容为"*",

从右第12位脱敏2位:

a a @ h h d b . c o m
第12位 11 10 9 8 7 6 5 4 3 2 1
12
脱敏2位 1 2
脱敏结果 * * @ h h d b . c o m

从右第12位脱敏13位:

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