Procedimentos para gerenciar políticas de mascaramento de dados
Você pode gerenciar políticas de mascaramento usando os procedimentos fornecidos pela extensão pg_columnmask. Para criar, modificar ou eliminar políticas de mascaramento, é necessário ter um dos seguintes privilégios:
-
Proprietário da tabela na qual você está criando a política
pg_columnmask. -
Membro do
rds_superuser. -
Membro do perfil de gerente de políticas
pg_columnmaskdefinido pelo parâmetropgcolumnmask.policy_admin_rolname.
O seguinte comando cria uma tabela que é usada nas seções seguintes:
CREATE TABLE public.customers ( id SERIAL PRIMARY KEY, name TEXT, phone TEXT, address TEXT, email TEXT );
CREATE_MASKING_POLICY
O seguinte procedimento cria uma política de mascaramento para uma tabela de usuários:
Sintaxe
create_masking_policy( policy_name, table_name, masking_expressions, roles, weight)
Argumentos
| Parâmetro | DataType | Descrição |
|---|---|---|
policy_name |
NAME |
O nome da política de mascaramento. Deve ser exclusivo por tabela. |
table_name |
REGCLASS |
O nome ou oid qualificado/não qualificado da tabela à qual aplicar a política de mascaramento. |
masking_expressions |
JSONB |
Objeto JSON que contém o nome da coluna e pares de funções de mascaramento. Cada chave é um nome de coluna e seu valor é a expressão de mascaramento a ser aplicada nessa coluna. |
roles |
NAME[] |
Os perfis aos quais essa política de mascaramento se aplica. O padrão é PUBLIC. |
weight |
INT |
Peso da política de mascaramento. Quando várias políticas são aplicáveis à consulta de determinado usuário, a política com o maior peso (maior número inteiro) será aplicada a cada coluna mascarada. O padrão é 0. Não há duas políticas de mascaramento na tabela com o mesmo peso. |
Tipo de retorno
Nenhum
exemplo da criação de uma política de mascaramento que mascare a coluna de e-mail do perfil 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
Esse procedimento modifica uma política de mascaramento existente. ALTER_MASKING_POLICY pode modificar as expressões de mascaramento da política, o conjunto de perfis aos quais a política se aplica e o peso da política de mascaramento. Quando um desses parâmetros é omitido, a parte correspondente da política permanece inalterada.
Sintaxe
alter_masking_policy( policy_name, table_name, masking_expressions, roles, weight)
Argumentos
| Parâmetro | DataType | Descrição |
|---|---|---|
policy_name |
NAME |
Nome da política de mascaramento existente. |
table_name |
REGCLASS |
O oid do nome qualificado/não qualificado da tabela que contém a política de mascaramento. |
masking_expressions |
JSONB |
Novo objeto JSON que contém pares de função de mascaramento e nome da coluna ou, caso contrário, NULL. |
roles |
NAME[] |
A lista de novos perfis aos quais essa política de mascaramento se aplica ou, caso contrário, NULL. |
weight |
INT |
Novo peso para a política de mascaramento ou, caso contrário, NULL. |
Tipo de retorno
Nenhum
exemplo de adicionar o perfil de analista a uma política de mascaramento existente sem alterar outros atributos da 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
Esse procedimento remove uma política de mascaramento existente.
Sintaxe
drop_masking_policy( policy_name, table_name)
Argumentos
| Parâmetro | DataType | Descrição |
|---|---|---|
policy_name |
NAME |
Nome da política de mascaramento existente. |
table_name |
REGCLASS |
O oid do nome qualificado/não qualificado da tabela que contém a política de mascaramento. |
Tipo de retorno
Nenhum
exemplo de descartar a política de mascaramento customer_mask
-- Drop a masking policy CALL pgcolumnmask.drop_masking_policy( 'customer_mask', 'public.customers', );