预定义的数据掩蔽函数 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

预定义的数据掩蔽函数

pg_columnmask 扩展提供了用 C 语言(执行速度更快)编写的内置实用程序函数,可用作 pg_columnmask 策略的掩蔽表达式。

mask_text

一个使用可配置的可见性选项掩蔽文本数据的函数。

参数

参数 DataType 描述
input TEXT

要掩蔽的原始文本字符串

mask_char CHAR(1)

用于掩蔽的字符(默认值:“X”)

visible_prefix INT

输入文本开头将保持未掩蔽状态的字符数(默认值:0)

visible_suffix INT

输入文本末尾将保持未掩蔽状态的字符数(默认值:0)

use_hash_mask BOOLEAN

如果为 TRUE,则使用基于哈希的掩蔽,而不是 mask_char(默认值:FALSE)

例 :使用不同的掩蔽选项

使用默认“X”字符掩蔽整个输入字符串

postgres=> SELECT pgcolumnmask.mask_text('Hello World'); mask_text ------------- XXXXXXXXXXX

使用 mask_char 参数通过不同的字符来掩蔽文本输入

postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*'); mask_text ------------- ***********

使用 visible_prefixvisible_suffix 参数来控制文本开头和结尾处有多少个字符保持未掩蔽状态

postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*', 5, 1); mask_text ------------- Hello*****d

use_hash_mask 为 true 时,使用随机字符掩蔽输入字符串而忽略 mask_char 参数,但 visible_prefixvisible_suffix 仍然有效

postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*', 2, 2, true); mask_text ------------- Hex36dOHild

mask_timestamp

参数 DataType 描述
ts_to_mask TIMESTAMP

要掩蔽的原始时间戳

mask_part TEXT

指定要掩蔽时间戳的哪个部分(默认值:“全部”)。有效值:“年”、“月”、“日”、“小时”、“分钟”、“秒”、“全部”

mask_value TIMESTAMP

要用于掩蔽的时间戳值(默认值:“1900-01-01 00:00:00”)

例 使用 mask_timestamps

这些示例演示了将时间戳完全掩蔽为默认值、部分掩蔽特定时间戳组成部分(仅限年份)以及使用自定义替换值进行掩蔽。

将输入值完全掩蔽为默认时间戳

postgres=> SELECT pgcolumnmask.mask_timestamp('2023-06-15 14:30:00'); mask_timestamp --------------------- 1900-01-01 00:00:00

仅掩蔽时间戳的一部分,例如仅掩蔽年份

postgres=> SELECT pgcolumnmask.mask_timestamp('2023-06-15 14:30:00', 'year'); mask_timestamp --------------------- 1900-06-15 14:30:00

要更改时间戳的掩蔽值,请使用 mask_value 参数

postgres=> SELECT pgcolumnmask.mask_timestamp('2023-06-15 14:30:00', 'all', '2012-12-12 12:12:12'); mask_timestamp --------------------- 2012-12-12 12:12:12

mask_timestamp

一个在保留电子邮件结构的同时掩蔽电子邮件地址的函数。

参数 DataType 描述
input TEXT

要掩蔽的原始电子邮件地址

mask_char CHAR(1)

用于掩蔽的字符(默认值:“X”)

mask_local BOOLEAN

如果为 TRUE,则掩蔽电子邮件的本地部分(位于 @ 之前)(默认值:TRUE)

mask_domain BOOLEAN

如果为 TRUE,则掩蔽电子邮件的域部分(位于 @ 之后)(默认值:TRUE)

例 使用 mask_email

这些示例演示了完全电子邮件掩蔽、自定义掩蔽字符以及对电子邮件地址的本地部分或域部分进行选择性掩蔽。

完全掩蔽

postgres=> SELECT pgcolumnmask.mask_email('user@example.com'); mask_email ------------------ XXXX@XXXXXXX.com

使用 mask_char 更改用于掩蔽的字符

postgres=> SELECT pgcolumnmask.mask_email('user@example.com', '*'); mask_email ------------------ ****@*******.com

使用 mask_localmask_domain 控制本地和域的掩蔽

postgres=> SELECT pgcolumnmask.mask_email('user@example.com', '*', true, false); mask_email ------------------ ****@example.com postgres=> SELECT pgcolumnmask.mask_email('user@example.com', '*', false, true); mask_email ------------------ user@*******.com