

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 管理資料遮罩政策的程序
<a name="AuroraPostgreSQL.Security.DynamicMasking.Procedures"></a>

您可以使用 `pg_columnmask` 擴充功能提供的程序來管理遮罩政策。若要建立、修改或捨棄遮罩政策，您必須具有下列其中一個權限：
+ 您要建立`pg_columnmask`政策之資料表的擁有者。
+ 的成員`rds_superuser`。
+ `pgcolumnmask.policy_admin_rolname` 參數設定`pg_columnmask`的政策管理員角色成員。

下列命令會建立用於後續區段的資料表：

```
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>

下列程序會為使用者資料表建立新的遮罩政策：

**語法**

```
create_masking_policy(
    policy_name,
    table_name,
    masking_expressions,
    roles,
    weight)
```

**Arguments (引數)**


| 參數 | Datatype | Description | 
| --- | --- | --- | 
| policy\_name | NAME | 遮罩政策的名稱。每個資料表必須是唯一的。 | 
| table\_name | REGCLASS | 要套用遮罩政策之資料表的合格/不合格名稱或 oid。 | 
| masking\_expressions | JSONB | 包含資料欄名稱和遮罩函數對的 JSON 物件。每個索引鍵都是資料欄名稱，其值是要套用至該資料欄的遮罩表達式。 | 
| roles | NAME【】 | 此遮罩政策適用的角色。預設為 PUBLIC。 | 
| weight | INT | 遮罩政策的權重。當多個政策適用於指定使用者的查詢時，具有最高權重 （較高的整數） 的政策將套用至每個遮罩的資料欄。<br />預設值為 0。資料表上沒有任何兩個遮罩政策可以具有相同的 wieght。 | 

**傳回類型**

無

**Example 建立遮罩政策以遮罩`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>

此程序會修改現有的遮罩政策。 `ALTER_MASKING_POLICY`可以修改政策遮罩表達式、政策套用的一組角色，以及遮罩政策的權重。省略其中一個參數時，政策的對應部分保持不變。

**語法**

```
alter_masking_policy(
    policy_name,
    table_name,
    masking_expressions,
    roles,
    weight)
```

**Arguments (引數)**


| 參數 | Datatype | Description | 
| --- | --- | --- | 
| policy\_name | NAME | 遮罩政策的現有名稱。 | 
| table\_name | REGCLASS | 包含遮罩政策之資料表的合格/不合格名稱 oid。 | 
| masking\_expressions | JSONB | 包含資料欄名稱和遮罩函數對或 NULL 的新 JSON 物件。 | 
| roles | NAME【】 | 套用此遮罩政策的新角色清單，否則為 NULL。 | 
| weight | INT | 遮罩政策或 NULL 的新權重。 | 

**傳回類型**

無

**Example 將分析師角色新增至現有遮罩政策，而不變更其他政策屬性。**  

```
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>

此程序會移除現有的遮罩政策。

**語法**

```
drop_masking_policy(
        policy_name,
        table_name)
```

**Arguments (引數)**


| 參數 | Datatype | Description | 
| --- | --- | --- | 
| policy\_name | NAME | 遮罩政策的現有名稱。 | 
| table\_name | REGCLASS | 包含遮罩政策之資料表的合格/不合格名稱 oid。 | 

**傳回類型**

無

**Example 捨棄遮罩政策 customer\_mask 的**  

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