在 SQLConsole-数据查询的帮助手册里面已经介绍,若表上存在敏感、机密字段,并且未单独开通对应字段级别的权限,则在查询结果中会以******
显示数据查询脱敏的相关内容,这可理解为对敏感数据进行全遮掩。
然而,在某些场合下研发人员或者测试人员需要感知敏感数据的一部分内容进行问题排查;本文介绍的“敏感数据管理”基于数据遮掩开放的脱敏方式,配合敏感字段权限对脱敏方式的扩展,就能做到这一点。
数据遮掩目前只支持关系型数据库、OLAP数据库,NoSQL如MongoDB、Redis暂不支持。
数据遮掩对数据查询(跨库查询)、数据导出提供了更灵活的脱敏遮掩方式。举个例子:手机号码,我们可以控制只对中间某几位进行遮掩,如136xxxxx799。
数据遮掩基于DMS企业版内置的遮掩算法来实现,用户可基于内置的遮掩算法对敏感字段需要的遮掩效果进行定制
遮掩算法,是用来实现上述所说部分脱敏的核心,一个遮掩算法,决定了一个敏感字段的脱敏方式:
******
还是XXXXXX
。目前系统内置以下3种遮掩算法:
******
”)。算法暂不支持自定义实现,用户仅能使用系统提供的内置算法。
遮掩算法作用在字段数据内容上面,目前遮掩算法没有对字段类型进行强限制,但是仍推荐只运用在字符串类型、数字类型的字段上面,且字符串类型长度尽可能短,最好是一些格式固定的字段,比如手机号,邮箱号码,身份证号码,姓名等等;太长的字符串在进行算法运算会消耗DB服务一定的计算资源。
为了迎合部分脱敏的能力,需要对申请的敏感列权限进行区分;原先的敏感列权限,包括查询、导出、变更,如果申请者申请了某个库、某个表的某个敏感列的查询权限,则在SQL查询,对这个敏感列数据的查询结果,直接以明文展示。
遮掩算法的引入,提供了部分脱敏的能力;敏感列权限的申请,增加了脱敏方式来与部分脱敏搭配使用,如下图所示:
以查询权限为例,若申请时脱敏方式选择的是“半脱敏”,且当前敏感字段定义了遮掩算法(可提供半脱敏能力),则当申请者在SQL查询对这个字段数据的查询结果,将运用配置的遮掩算法来进行脱敏处理,不再是以前的“******
”,而是根据定义在该字段上面的遮掩算法,来决定其展示。
同样以查询权限为例子,若申请时脱敏方式选择的是“明文”,则用户在SQL查询对这个字段数据的查询结果,将直接明文展示。
以上描述的逻辑用下面的流程图来展示,理解起来更直观:
数据遮掩功能,归纳到“【系统管理】”->“【敏感数据管理】”菜单页里面。仅限DMS企业版内的管理员、安全管理员、DBA角色可见入口可操作。入口处总览整个企业定义的所有敏感字段,在此处可进行对特定敏感字段设置特定的数据遮掩算法;此外,作为管理视图,可在此处方便的调整敏感字段安全级别。
【温馨提示】
通过“操作”里面的“添加算法”,可对字段设置遮掩算法。
固定位置算法需要进行两个配置项的设置:
遮掩字符
***
,xxx
,【敏感数据】等等待遮掩位置
也可指定多个位置,但是最多不超过3个位置,具体示例:
(1, 4), (8, 10), (-4)
表示遮掩前4位,中间2位,最后4位
该算法也需要进行两个配置项的设置:
待替换字符:定义哪些个字符需要被替换,可配置多个待脱敏的字符串,但是最多不超过3个;举个例子:
test
【说明】对数据内容中的 “test”进行脱敏,脱敏的字符串在“遮掩字符”中定义
在体验数据遮掩功能之前,需要准备一张设置了敏感列的数据表。
按以下步骤,可实践体验数据遮掩:
yuyang_test.base_user 定义了两个敏感字段,phone和phone1,phone1字段的遮掩算法设置如上图所示;其中用户对phone敏感字段有查询(明文)权限,对phone1敏感字段有查询(半脱敏)权限,则在SQL查询该表后数据的脱敏展示效果如下所示:
数据导出,若导出SQL中包含敏感字段,且该用户具备了敏感字段的“半脱敏”导出权限,则提交申请后,该敏感字段的导出内容为经过遮掩算法运算后的结果,假设该字段没有定义遮掩算法,则使用“******
”,逻辑同SQL查询。
SQL语句无权限或者半脱敏敏感列参与函数运算,数据遮掩无法作用。
数据遮掩对字段类型无限制,但不排除遮掩算法不适用。
在文档使用中是否遇到以下问题
更多建议
匿名提交