在掩蔽策略 DDL 过程中对标识符进行转义
使用带引号的标识符创建数据掩蔽策略时,需要进行适当的转义,以确保对象引用和策略应用正确无误。要在 pg_columnmask 掩蔽策略管理过程中使用带引号的标识符:
策略名称:必须包含在双引号内。
表名称:需要时,架构名称和表名称必须分别用双引号括起来。
掩蔽表达式:掩蔽表达式中的列名称和函数名称必须用双引号括起来,并且必须使用反斜杠对引号本身进行转义。
角色:自动为角色名称的数组加引号。角色名称应与
pg_roles中显示的名称完全匹配,包括区分大小写。
例 :转义和加引号语法
此示例显示了在 Aurora PostgreSQL 中为使用大小写混合名称或需要带引号的标识符的表、列、函数和角色创建掩蔽策略时,正确的转义和加引号语法。
-- Create a table and columns with mixed case name CREATE TABLE public."Employees" ( "Name" TEXT, "Email" TEXT, ssn VARCHAR(20) ); -- Create a role with mixed case name CREATE ROLE "Masked_user"; -- Create a function with mixed case name CREATE OR REPLACE FUNCTION public."MaskEmail"(text) RETURNS character varying LANGUAGE plpgsql IMMUTABLE PARALLEL SAFE AS $$ BEGIN RETURN 'XXXXXXXX'::text; END $$; -- Now use these objects with mixed case names in -- masking policy management procedures CALL pgcolumnmask.create_masking_policy( '"Policy1"', -- policy name should be surrounded with double quotes for quoting 'public."Employees"', -- table and schema name should be individually -- surrounded with double quotes for quoting JSON_OBJECT('{ "\"Email\"", "\"MaskEmail\"(\"Email\")" }')::JSONB, -- masking expression should have double quotes around function names -- and columns names etc when needed. Also the double quotes itself -- should be escaped using \ (backslash) since this is a JSON string ARRAY['Masked_user'], -- Rolename do not need quoting -- (this behaviour may change in future release) 100 ); SELECT * FROM pgcolumnmask.pg_columnmask_policies WHERE tablename = 'Employees'; -[ RECORD 1 ]-----+------------------------------------- schemaname | public tablename | Employees policyname | Policy1 roles | {Masked_user} masked_columns | {Email} masking_functions | {"(\"MaskEmail\"(\"Email\"))::text"} weight | 100
管理视图
您可以使用可公开访问的 pgcolumnmask.pg_columnmask_policies 管理视图来查看所有 pg_columnmask 策略。使用此视图可获得以下信息。该视图仅返回当前用户拥有的掩蔽策略。
| 列名称 | 数据类型 | 描述 |
|---|---|---|
|
schemaname |
NAME |
已附加策略的关系的架构 |
|
tablename |
NAME |
已附加策略的关系的名称 |
|
policyname |
NAME |
掩蔽策略的名称,所有掩蔽策略都有唯一的名称 |
|
角色 |
TEXT[] |
策略应用到的角色。 |
|
masked_columns |
TEXT[] |
掩蔽的列 |
|
masking_functions |
TEXT[] |
掩蔽的函数 |
| weight | INT |
附加的策略的权重 |