更新时间:2024-11-27 GMT+08:00

数据脱敏函数

数据脱敏函数提供一系列不同脱敏形式的函数接口,可以覆盖常见的脱敏场景。通常结合数据脱敏语法,与脱敏列绑定使用,不推荐直接作用在查询语句上。

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

    脱敏字符,仅允许长度为1的任意字符。场景的脱敏字符包括"*","#"等。

  • mask_from

    脱敏范围的起始位置,要求大于0。

  • 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语言自定义脱敏函数。

自定义脱敏函数需要严格遵循如下要求:
  • 返回值与脱敏列类型一致。
  • 函数必须可下推。
  • 参数列表除脱敏格式外,只能包含一个脱敏列。
  • 函数仅实现针对特定数据类型的格式化改写功能,不能涉及与其他表对象的复杂关联操作。

不满足前两项中任一项时,创建脱敏策略会报错。不满足后两项中任一项时,可成功创建脱敏策略,但查询执行结果可能会出现不可预知的问题。