更新时间:2025-10-27 GMT+08:00
分享

动态脱敏

功能简介

动态脱敏指的是当应用程序发起查询请求访问数据库时,数据库在将结果返回给客户端的过程中,对敏感数据进行脱敏处理的一种安全手段。TaurusDB动态脱敏功能通过添加脱敏规则实现指定库、表、列的数据进行脱敏。

工作原理

使用root账户配置脱敏规则后,数据库会将脱敏规则持久化保存。当应用程序执行查询时,数据库会首先判断查询条件是否符合规则。如果符合,则会对返回的数据结果进行脱敏处理,最终将脱敏后的数据发送给客户端。

如图所示,配置的脱敏规则为:

  • 仅当使用user1账号连接数据库做查询操作时生效。
  • 仅对查询结果中db1并且t1表中的name和age字段进行脱敏。

除了脱敏规则表中配置的列外,返回原始数据。

图1 原理图

如上图所示,字符串类型name脱敏成******,整数类型INT脱敏成随机正整数。不同数据类型的脱敏策略不同,详见表1

表1 脱敏处理说明

数据类型

脱敏处理说明

整数型(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、BOOLEAN)

脱敏为正整数。

小数型(DECIMAL、FLOAT、DOUBLE)

时间型(YEAR)

时间型(DATE、TIME、DATETIME、TIMESTAMP)

DATE脱敏之后的范围:[1000:01:01,9999:12:31.499999]

TIME脱敏之后的范围:[00:00:00,838:59:59.499999]

DATETIME、TIMESTAMP取值范围:[1971:01:01 00:00:00, 2037:12:31 23:59:59.49999]

除上述类型之外的类型

脱敏为:******

性能影响

开启动态脱敏功能,并且配置全字段脱敏规则(add_mask_rule('', '', '', '')),在性能白皮书只读性能测试场景下,配置128条脱敏规则,数据库性能损耗在10%左右。

版本限制

TaurusDB动态脱敏功能要求内核版本为2.0.69.250900及以上版本。

内核版本的查询方法请参见如何查看云数据库 TaurusDB实例的版本号

脱敏规则约束限制

  • 当前仅支持对SELECT语句数据脱敏。
  • 脱敏规则对系统库不生效。系统库包括:mysql、information_schema、performance_schema、sys。
  • 单个数据库名、表名、列名、用户名首尾的空格和特殊空白字符(如'\t'、'\r'、'\n')在脱敏后会被忽略。
  • 单个数据库名、表名、列名长度不超过64 bytes,单个用户名长度不超过32 bytes。超过此限制添加脱敏规则时将会失败。
  • 脱敏规则中的管理员用户列表(rds_dynamic_masking_super_users)长度不超过4000 bytes。
  • 只有root用户可以执行添加、删除、启用、禁用、更新脱敏规则操作。
  • 所有用户均可执行查询脱敏规则操作。

动态脱敏参数

在管理控制台的参数修改页面,通过设置表2中的参数,可以开启动态脱敏特性和管理脱敏规则。

表2 参数说明

参数名称

级别

描述

rds_dynamic_masking_enabled

Global

动态脱敏特性开关。

默认值为OFF。

rds_dynamic_masking_super_users

Global

支持配置多个管理员用户,多个管理员用户之间使用英文逗号分隔。脱敏规则对管理员用户不生效。

默认值为空字符串。

示例:'user1,user2'

rds_masking_paramter_max_count

Global

数据库名、表名、列名、用户名最大可配置个数。

默认值为100,即一条规则中最多可配置100个数据库名,100个表名,100个列名和100个用户名。

取值范围[1, 1000]。

rds_masking_map_size

Global

脱敏规则的内存占用上限,单位是MB。

默认为8MB。

设置过高可能引发内存溢出(OOM),请您谨慎操作。

使用方法

常见问题

相关文档