GaussDB-敏感数据发现
GaussDB-敏感数据发现
可获得性
本特性自505.1.0版本开始引入。
特性简介
敏感数据发现功能提供函数gs_sensitive_data_discovery()和gs_sensitive_data_discovery_detail(),通过调用的不同函数,指定扫描对象和敏感数据分类器,得到对应扫描对象不同明细级别的敏感数据信息。
客户价值
敏感数据发现功能配合数据库内其他数据标记(如动态数据脱敏机制,基于标签的强制访问控制等)和保护特性(如透明数据加密,行级访问控制等)能够帮助客户:
- 有效识别敏感信息和资产。
- 提供更全面的数据保护能力。
- 满足客户隐私数据保护以及符合监管的需求。
特性描述
本特性以函数调用的形式实现功能。分为两个部分:
- 敏感数据发现函数框架的实现:包含内置函数的添加、参数校验、采样扫描、对采样数据应用分类器、扫描结果处理、异常处理、函数执行动作记录审计日志等。
- 敏感数据分类器的具体算法实现:本次支持内置以下分类器(不区分大小写),分别为Email(电子邮件)/ PhoneNumber(电话号码)/ CreditCard(信用卡)/ ChineseName(中文姓名)/ EncryptedContent (加密数据)/ all(以上五种分类器全部选择)。
具体分类原理及命中规则如下表1所示
表1 敏感数据分类器及分类器说明 分类器
分类器说明
电子邮件
匹配形如“example@example.com”、“example@example.co.uk”、“example@example.com.org”等的电子邮件地址。
电话号码(中国)
匹配手机号码,必须是(+国家代码)手机号格式,手机号长度必须是11位数字,形如:+86 xxxxxxxxxxx,xxxxxxxxxxx,xxx xxxx xxxx,xxx-xxxx-xxxx。
信用卡
信用卡卡号位数需满足16位并且满足Luhn(mod 10)算法要求。
说明:Luhn(mod 10)算法:
- 从卡号最后一位数字开始,逆向将奇数位(1、3、5等)相加;
- 从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和;
- 将奇数位总和加上偶数位总和,结果能被10整除则认为是合法的信用卡号,否则不是。
中文姓名
使用中国常见的姓氏进行判断。需要满足以下约束:
- 仅支持简体中文。
- 对于某些少数民族姓名,可能存在漏报场景。
- 仅对姓名长度为2-4的数据进行判断,超出此范围的数据不认为满足姓名规则。
- 姓或名拆开为单独的列不会被识别成敏感。
- 仅姓在前名在后的数据会被认为是符合规则的,姓在后名在前的数据也不会被识别为敏感。
加密数据
通过计算数据信息熵,并与设置的阈值相比较,信息熵高于该阈值,则认为数据为敏感。该阈值保证数据库中所有加解密算法得到的密文均能识别为密文敏感数据。
特性增强
无。
特性约束
- 仅支持对扫描范围内可访问对象中的列应用分类器进行判断,无权限对象则跳过,函数执行结果中回显NOTICE提示存在无权限访问的对象。
- 仅支持对用户创建的模式、普通表、分区表、二级分区表进行扫描,不支持对snapshot、AI、系统schema等模式进行扫描,不支持对索引、物化视图等进行扫描。如果指定的扫描范围本身是规格范围外的对象,则会提示不支持;如果指定的扫描范围本身支持,但其中包含的某些对象不支持,则不会提示。
- 中文姓名分类器中只支持简体中文。对于少数民族姓名可能无法识别,会有漏报出现。
- 不建议在数据库业务繁忙阶段调用敏感数据发现函数、不建议多个客户端并发执行敏感数据发现函数、不建议在短时间内多次调用敏感数据发现函数,性能敏感场景下,可以开启IO管控和流控后再调用敏感数据发现函数。
- 由于敏感数据发现是在堆表层进行扫描,不会受到行级访问控制策略的影响。添加了行级访问控制的行数据也可以被正常扫描。
依赖关系
无。

浙公网安备 33010602011771号