

# Procedimentos para gerenciar políticas de mascaramento de dados
<a name="AuroraPostgreSQL.Security.DynamicMasking.Procedures"></a>

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_columnmask` definido pelo parâmetro `pgcolumnmask.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
<a name="AuroraPostgreSQL.Security.DynamicMasking.Procedures.CreateMaskingPolicy"></a>

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.<br />O padrão é 0. Não há duas políticas de mascaramento na tabela com o mesmo peso. | 

**Tipo de retorno**

Nenhum

**Example 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
<a name="AuroraPostgreSQL.Security.DynamicMasking.Procedures.AlterMaskingPolicy"></a>

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

**Example 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
<a name="AuroraPostgreSQL.Security.DynamicMasking.Procedures.DropMaskingPolicy"></a>

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

**Example de descartar a política de mascaramento customer\_mask**  

```
-- Drop a masking policy
    CALL pgcolumnmask.drop_masking_policy(
        'customer_mask',
        'public.customers',
    );
```