

# データマスキングポリシーを管理する手順
<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)
```

**引数**


| パラメータ | Datatype | 説明 | 
| --- | --- | --- | 
| policy\_name | NAME | マスキングポリシーの名前。テーブルごとに一意である必要があります。 | 
| table\_name | REGCLASS | マスキングポリシーを適用するテーブルの修飾名または非修飾名または oid。 | 
| masking\_expressions | JSONB | 列名とマスキング関数のペアを含む JSON オブジェクト。各キーは列名で、その値はその列に適用されるマスキング式です。 | 
| roles | NAME[] | このマスキングポリシーが適用されるロール。デフォルトは PUBLIC です。 | 
| weight | INT | マスキングポリシーの重み。特定のユーザーのクエリに複数のポリシーが適用される場合、重みが最も大きいポリシー (整数数が高い) がマスクされた各列に適用されます。<br />デフォルトは 0 です。テーブル上の 2 つのマスキングポリシーが同じ重みを持つことはできません。 | 

**戻り値の型**:

なし

**Example `test_user` ロールの E メール列をマスクするマスキングポリシーの作成:**  

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

**引数**


| パラメータ | Datatype | 説明 | 
| --- | --- | --- | 
| 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)
```

**引数**


| パラメータ | Datatype | 説明 | 
| --- | --- | --- | 
| policy\_name | NAME | 既存のマスキングポリシーの名前。 | 
| table\_name | REGCLASS | マスキングポリシーを含むテーブルの修飾/非修飾名 oid。 | 

**戻り値の型**:

なし

**Example マスキングポリシー customer\_mask の削除**  

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