Identificadores de escape en el procedimiento de DDL de la política de enmascaramiento
Al crear políticas de enmascaramiento de datos con los identificadores entre comillas, es necesario utilizarlas adecuadamente para garantizar que las referencias a los objetos y la aplicación de la política sean correctas. Para utilizar los identificadores entre comillas en los procedimientos de administración de la política de enmascaramiento pg_columnmask:
Nombre de la política: debe estar entre comillas dobles.
Nombre de la tabla: el nombre del esquema y el nombre de la tabla deben escribirse entre comillas dobles de forma individual cuando sea necesario.
Expresiones de enmascaramiento: los nombres de las columnas y funciones de las expresiones de enmascaramiento deben ir entre comillas dobles y las propias comillas deben ir precedidas de una barra invertida.
Roles: la matriz de nombres de roles se cita automáticamente. El nombre del rol debe coincidir exactamente con el nombre que se muestra en
pg_rolesal distinguir mayúsculas y minúsculas.
ejemplo de la sintaxis de escape y comillas
En este ejemplo, se muestra la sintaxis de escape y comillas adecuada al crear políticas de enmascaramiento para tablas, columnas, funciones y roles que utilizan nombres en mayúsculas y minúsculas o que requieren identificadores entre comillas en 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
Vistas administrativas
Puede revisar toda la política de pg_columnmask mediante la vista administrativa de pgcolumnmask.pg_columnmask_policies de acceso público. La siguiente información está disponible mediante esta vista. La vista solo devuelve las políticas de enmascaramiento que son propiedad del usuario actual.
| Nombre de la columna | Tipo de datos: | Descripción |
|---|---|---|
|
schemaname |
NAME |
Esquema de la relación a la que está asociada la política |
|
tablename |
NAME |
Nombre de la relación a la que está asociada la política |
|
policyname |
NAME |
Nombre de la política de enmascaramiento, todas las políticas de enmascaramiento tienen nombres únicos |
|
roles |
TEXT[] |
Rol al que se aplica la política. |
|
masked_columns |
TEXT[] |
Columnas de enmascaramiento |
|
masking_functions |
TEXT[] |
Funciones de enmascaramiento |
| weight | INT |
Peso de la política adjunta |