用于管理数据掩蔽策略的过程 - Amazon Aurora

用于管理数据掩蔽策略的过程

您可以使用 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。表上的任何两个掩蔽策略都不能具有相同的权重。

返回类型

例 :创建掩蔽策略来掩蔽 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

包含列名称和掩蔽函数对的新 JSON 对象,否则为 NULL。

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', );