

# Procedimientos para administrar políticas de enmascaramiento de datos
<a name="AuroraPostgreSQL.Security.DynamicMasking.Procedures"></a>

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_columnmask` establecido por el parámetro `pgcolumnmask.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
<a name="AuroraPostgreSQL.Security.DynamicMasking.Procedures.CreateMaskingPolicy"></a>

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.<br />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

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

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

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

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

**Example de eliminar la política de enmascaramiento customer\_mask**  

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