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_rolesincluindo 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 |