Procedimientos para administrar políticas de enmascaramiento de datos
Puede administrar las políticas de enmascaramiento mediante los procedimientos proporcionados por la extensión pg_columnmask. Para crear, modificar o eliminar políticas de enmascaramiento, debe contar con uno de los siguientes privilegios:
-
Propietario de la tabla en la que va a crear la política de
pg_columnmask. -
Miembro de
rds_superuser. -
Miembro del rol de mánager de la política de
pg_columnmaskestablecido por el parámetropgcolumnmask.policy_admin_rolname.
El siguiente comando crea una tabla que se utiliza en las siguientes secciones:
CREATE TABLE public.customers ( id SERIAL PRIMARY KEY, name TEXT, phone TEXT, address TEXT, email TEXT );
CREATE_MASKING_POLICY
El siguiente procedimiento crea una nueva política de enmascaramiento para una tabla de usuarios:
Sintaxis
create_masking_policy( policy_name, table_name, masking_expressions, roles, weight)
Argumentos
| Parámetro | Tipo de datos | Descripción |
|---|---|---|
policy_name |
NAME |
Nombre de la política de enmascaramiento. Debe ser único por tabla. |
table_name |
REGCLASS |
El nombre cualificado o no cualificado o nulo de la tabla para aplicar la política de enmascaramiento. |
masking_expressions |
JSONB |
Objeto JSON que contiene los pares de nombre de columna y función de enmascaramiento. Cada clave es el nombre de una columna y su valor es la expresión de enmascaramiento que se va a aplicar a esa columna. |
roles |
NAME[] |
Los roles a los que se aplica esta política de enmascaramiento. Predeterminado es PUBLIC. |
weight |
INT |
Peso de la política de enmascaramiento. Cuando se apliquen varias políticas a la consulta de un usuario determinado, la política con el peso más alto (número entero más alto) se aplicará a cada columna enmascarada. El valor predeterminado es 0. No hay dos políticas de enmascaramiento de la tabla que puedan tener el mismo peso. |
Tipo de devolución
Ninguno
ejemplo de crear una política de enmascaramiento que oculte la columna de correo electrónico del rol test_user:
CALL pgcolumnmask.create_masking_policy( 'customer_mask', 'public.customers', JSON_OBJECT('{ "email", "pgcolumnmask.mask_email(email)" }')::JSONB, ARRAY['test_user'], 100 );
ALTER_MASKING_POLICY
Este procedimiento modifica una política de enmascaramiento existente. ALTER_MASKING_POLICY puede modificar las expresiones de enmascaramiento de la política, el conjunto de roles a los que se aplica la política y el peso de la política de enmascaramiento. Cuando se omite uno de esos parámetros, la parte correspondiente de la política permanece inalterada.
Sintaxis
alter_masking_policy( policy_name, table_name, masking_expressions, roles, weight)
Argumentos
| Parámetro | Tipo de datos | Descripción |
|---|---|---|
policy_name |
NAME |
El nombre existente de la política de enmascaramiento. |
table_name |
REGCLASS |
El nombre cualificado o no cualificado o nulo de la tabla que contiene la política de enmascaramiento. |
masking_expressions |
JSONB |
Nuevo objeto JSON que contiene los pares de nombre de columna y función de enmascaramiento, de lo contrario, NULL. |
roles |
NAME[] |
La lista de roles nuevos a los que se aplica esta política de enmascaramiento o NULL en caso contrario. |
weight |
INT |
Nuevo peso para la política de enmascaramiento o NULL en caso contrario. |
Tipo de devolución
Ninguno
ejemplo de agregar el rol de analista a una política de enmascaramiento existente sin cambiar otros atributos de la política.
CALL pgcolumnmask.alter_masking_policy( 'customer_mask', 'public.customers', NULL, ARRAY['test_user', 'analyst'], NULL ); -- Alter the weight of the policy without altering other details CALL pgcolumnmask.alter_masking_policy( 'customer_mask', 'customers', NULL, NULL, 4 );
DROP_MASKING_POLICY
Este procedimiento elimina una política de enmascaramiento existente.
Sintaxis
drop_masking_policy( policy_name, table_name)
Argumentos
| Parámetro | Tipo de datos | Descripción |
|---|---|---|
policy_name |
NAME |
El nombre existente de la política de enmascaramiento. |
table_name |
REGCLASS |
El nombre cualificado o no cualificado o nulo de la tabla que contiene la política de enmascaramiento. |
Tipo de devolución
Ninguno
ejemplo de eliminar la política de enmascaramiento customer_mask
-- Drop a masking policy CALL pgcolumnmask.drop_masking_policy( 'customer_mask', 'public.customers', );