事前定義されたデータマスキング関数
pg_columnmask 拡張機能は、pg_columnmask ポリシーのマスキング式として使用できる C 言語 (高速実行用) で記述された組み込みユーティリティ関数を提供します。
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_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
E メール構造を保持しながら E メールアドレスをマスクする関数。
| パラメータ | Datatype | 説明 |
|---|---|---|
input |
TEXT |
マスクする元の E メールアドレス |
mask_char |
CHAR(1) |
マスキングに使用される文字 (デフォルト: 'X') |
mask_local |
BOOLEAN |
TRUE の場合、E メールのローカル部分をマスクします (@ より前) (デフォルト: TRUE) |
mask_domain |
BOOLEAN |
TRUE の場合、E メールのドメイン部分をマスクします (@ の後) (デフォルト: TRUE) |
例 mask_email の使用
これらの例は、E メールアドレスのローカル部分またはドメイン部分の完全な E メールマスキング、カスタムマスク文字、選択的マスキングを示しています。
完全なマスキング
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