本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理資料遮罩政策的程序
您可以使用 pg_columnmask 擴充功能提供的程序來管理遮罩政策。若要建立、修改或捨棄遮罩政策,您必須具有下列其中一個權限:
-
您要建立
pg_columnmask政策之資料表的擁有者。 -
的成員
rds_superuser。 -
pgcolumnmask.policy_admin_rolname參數設定pg_columnmask的政策管理員角色成員。
下列命令會建立在後續區段中使用的資料表:
CREATE TABLE public.customers ( id SERIAL PRIMARY KEY, name TEXT, phone TEXT, address TEXT, email TEXT );
CREATE_MASKING_POLICY
下列程序會為使用者資料表建立新的遮罩政策:
語法
create_masking_policy( policy_name, table_name, masking_expressions, roles, weight)
Arguments (引數)
| 參數 | Datatype | 描述 |
|---|---|---|
policy_name |
NAME |
遮罩政策的名稱。每個資料表必須是唯一的。 |
table_name |
REGCLASS |
要套用遮罩政策之資料表的合格/不合格名稱或 oid。 |
masking_expressions |
JSONB |
包含資料欄名稱和遮罩函數對的 JSON 物件。每個索引鍵都是資料欄名稱,其值是要套用至該資料欄的遮罩表達式。 |
roles |
NAME【】 |
此遮罩政策套用的角色。預設為 PUBLIC。 |
weight |
INT |
遮罩政策的權重。當多個政策適用於指定使用者的查詢時,具有最高權重 (較高的整數) 的政策將套用至每個遮罩的資料欄。 預設值為 0。資料表上沒有任何兩個遮罩政策可以具有相同的 wieght。 |
傳回類型
無
範例 建立遮罩政策以遮罩test_user角色的電子郵件欄:
CALL pgcolumnmask.create_masking_policy( 'customer_mask', 'public.customers', JSON_OBJECT('{ "email", "pgcolumnmask.mask_email(email)" }')::JSONB, ARRAY['test_user'], 100 );
ALTER_MASKING_POLICY
此程序會修改現有的遮罩政策。 ALTER_MASKING_POLICY可以修改政策遮罩表達式、政策套用的一組角色,以及遮罩政策的權重。省略其中一個參數時,政策的對應部分保持不變。
語法
alter_masking_policy( policy_name, table_name, masking_expressions, roles, weight)
Arguments (引數)
| 參數 | Datatype | 描述 |
|---|---|---|
policy_name |
NAME |
遮罩政策的現有名稱。 |
table_name |
REGCLASS |
包含遮罩政策之資料表的合格/不合格名稱 oid。 |
masking_expressions |
JSONB |
包含資料欄名稱和遮罩函數對或 NULL 的新 JSON 物件。 |
roles |
NAME【】 |
套用此遮罩政策的新角色清單,否則為 NULL。 |
weight |
INT |
遮罩政策或 NULL 的新權重。 |
傳回類型
無
範例 將分析師角色新增至現有遮罩政策,而不變更其他政策屬性。
CALL pgcolumnmask.alter_masking_policy( 'customer_mask', 'public.customers', NULL, ARRAY['test_user', 'analyst'], NULL ); -- Alter the weight of the policy without altering other details CALL pgcolumnmask.alter_masking_policy( 'customer_mask', 'customers', NULL, NULL, 4 );
DROP_MASKING_POLICY
此程序會移除現有的遮罩政策。
語法
drop_masking_policy( policy_name, table_name)
Arguments (引數)
| 參數 | Datatype | 描述 |
|---|---|---|
policy_name |
NAME |
遮罩政策的現有名稱。 |
table_name |
REGCLASS |
包含遮罩政策之資料表的合格/不合格名稱 oid。 |
傳回類型
無
範例 捨棄遮罩政策 customer_mask 的
-- Drop a masking policy CALL pgcolumnmask.drop_masking_policy( 'customer_mask', 'public.customers', );