Inserir caractere de escape em identificadores no procedimento DDL da política de mascaramento - Amazon Aurora

Inserir caractere de escape em identificadores no procedimento DDL da política de mascaramento

Quando você cria políticas de mascaramento de dados com identificadores entre aspas, o escape adequado é necessário para garantir referências de objetos e aplicação de políticas corretas. Para usar identificadores entre aspas nos procedimentos de gerenciamento da política de mascaramento pg_columnmask:

  • Nome da política: deve ser entre aspas duplas.

  • Nome da tabela: tanto o nome do esquema quanto o nome da tabela devem ser colocados entre aspas duplas individualmente quando necessário.

  • Expressões de mascaramento: os nomes de colunas e funções nas expressões de mascaramento devem estar entre aspas duplas e as próprias aspas devem ser excluídas usando uma barra invertida.

  • Funções: a matriz de nomes de perfil é automaticamente citada. O nome do perfil deve corresponder exatamente ao nome, conforme visto em pg_roles incluindo a distinção entre maiúsculas e minúsculas.

exemplo da sintaxe de escape e aspas

Este exemplo mostra a sintaxe adequada de escape e aspas na criação de políticas de mascaramento para tabelas, colunas, funções e perfis que usam nomes em maiúsculas e minúsculas ou exigem identificadores entre aspas no 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

Visualizações administrativas

Você pode revisar toda a política pg_columnmask usando a visualização administrativa pgcolumnmask.pg_columnmask_policies acessível ao público. As informações a seguir estão disponíveis usando essa visualização. A visualização exibe somente as políticas de mascaramento pertencentes ao usuário atual.

Nome da coluna Tipo de dados Descrição

schemaname

NAME

Esquema da relação à qual a política está anexada

tablename

NAME

Nome da relação à qual a política está anexada

policyname

NAME

Nome da política de mascaramento, todas as políticas de mascaramento têm nomes exclusivos

funções

TEXT[]

Perfil ao qual a política se aplica.

masked_columns

TEXT[]

Colunas mascaradas

masking_functions

TEXT[]

Funções de mascaramento

weight INT

Peso da política anexada