預先定義的資料遮罩函數 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

預先定義的資料遮罩函數

pg_columnmask extension 提供以 C 語言寫入的內建公用程式函數 (以加快執行速度),可用於pg_columnmask政策的遮罩表達式。

mask_text

使用可設定的可見性選項遮罩文字資料的 函數。

Arguments (引數)

參數 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_prefix但仍會visible_suffix接受

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

mask_timestamp

參數 Datatype 描述
ts_to_mask TIMESTAMP

要遮罩的原始時間戳記

mask_part TEXT

指定要遮罩的時間戳記部分 (預設值:'all') 有效值:'year'、'month'、'day'、'hour'、'minute'、'second'、'all'

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