本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
預先定義的資料遮罩函數
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_prefix和 visible_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_local和 mask_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