사전 정의된 데이터 마스킹 함수
pg_columnmask 확장은 pg_columnmask 정책의 마스킹 표현식으로 사용할 수 있는 C 언어(더 빠른 실행을 위해)로 작성된 내장 유틸리티 함수를 제공합니다.
mask_text
구성 가능한 가시성 옵션으로 텍스트 데이터를 마스킹하는 함수입니다.
인수
| 파라미터 | 데이터 형식 | 설명 |
|---|---|---|
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
| 파라미터 | 데이터 형식 | 설명 |
|---|---|---|
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
이메일 구조를 유지하면서 이메일 주소를 마스킹하는 함수입니다.
| 파라미터 | 데이터 형식 | 설명 |
|---|---|---|
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