在掩蔽策略 DDL 过程中对标识符进行转义 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在掩蔽策略 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

附加的策略的权重