数据脱敏函数
数据脱敏函数提供一系列不同脱敏形式的函数接口,可以覆盖常见的脱敏场景。通常结合数据脱敏语法,与脱敏列绑定使用,不推荐直接作用在查询语句上。
mask_none(column_name)
描述:不作任何脱敏处理,仅内部测试用。
返回值类型:与入参column_name数据类型相同
mask_full(column_name)
描述:全脱敏成固定值。脱敏列的数据类型不同,脱敏的固定值不同。
返回值类型:与入参column_name数据类型相同。
mask_partial(column_name, mask_digital, mask_from[, mask_to])
描述:针对数值类型数据,将第mask_from到mask_to位的数字部分脱敏成mask_digital对应的数字。其中,参数mask_to允许缺省,缺省时即脱敏到数据结束位置。参数mask_digital只能取[0,9]区间内的数字。
返回值类型:与入参column_name数据类型相同。
mask_partial(column_name [, input_format, output_format], mask_char, mask_from[, mask_to])
描述:针对字符类型数据,对照指定的输入输出格式,将第mask_from到mask_to位的数字部分脱敏成mask_char指定的字符。
参数说明:
- input_format
输入格式是由V和F组成的字符序列,与脱敏列数据长度相同。V对应位置的字符可能会被脱敏,F对象位置的字符会被忽略跳过,V字符序列标识脱敏范围。输入输出格式参数适用于定长数据,比如,银行卡号、身份证号、手机号等。
- output_format
输出格式是由V和其他任意字符组成的字符序列,与脱敏列数据长度相同。V字符位置与input_format的V位置对应,其他字符位置与input_format的F位置对应,且不会脱敏,通常为数据分隔符。
input_format和output_format可以缺省或指定为空串"",此时,无输入输出格式要求,原始字符序列范围即为脱敏范围。
- mask_char
- mask_from
- mask_to
返回值类型:与入参column_name数据类型相同。
mask_partial(column_name, mask_field1, mask_value1, mask_field2, mask_value2, mask_field3, mask_value3)
描述:按指定三个时间域做部分脱敏,仅适用于日期或时间类型数据。若mask_value取-1,即此mask_field不脱敏。其中,mask_field可以取"month"、"day"、"year"、"hour"、"minute"、"second"六个时间域之一。各域的取值范围需满足实际时间单位的取值范围。
返回值类型:与入参column_name数据类型相同。
脱敏函数可以覆盖常见敏感信息的脱敏场景,推荐用户优先使用脱敏函数创建脱敏策略。
数据脱敏函数的使用方法,请参考数据脱敏。
自定义脱敏函数
支持用户使用PL/PGSQL语言自定义脱敏函数。
- 返回值与脱敏列类型一致。
- 函数必须可下推。
- 参数列表除脱敏格式外,只能包含一个脱敏列。
- 函数仅实现针对特定数据类型的格式化改写功能,不能涉及与其他表对象的复杂关联操作。
不满足前两项中任一项时,创建脱敏策略会报错。不满足后两项中任一项时,可成功创建脱敏策略,但查询执行结果可能会出现不可预知的问题。
如果绑定的自定义脱敏函数被删除,查询会因为脱敏策略失效而执行报错。