

# 데이터 마스킹 정책 관리 절차
<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)
```

**인수**


| 파라미터 | 데이터 형식 | 설명 | 
| --- | --- | --- | 
| policy\_name | NAME | 마스킹 정책의 이름입니다. 테이블마다 고유해야 합니다. | 
| table\_name | REGCLASS | 마스킹 정책을 적용할 테이블의 정규화된/비정규화된 이름 또는 oid입니다. | 
| masking\_expressions | JSONB | 열 이름과 마스킹 함수 페어가 포함된 JSON 객체입니다. 각 키는 열 이름이며 해당 값은 해당 열에 적용할 마스킹 표현식입니다. | 
| roles | NAME[] | 이 마스킹 정책이 적용되는 역할입니다. 기본값은 PUBLIC입니다. | 
| weight | INT | 마스킹 정책의 가중치입니다. 지정된 사용자의 쿼리에 여러 정책을 적용할 수 있는 경우 가중치가 가장 높은(높은 정수 수) 정책이 마스킹된 각 열에 적용됩니다.<br />기본값은 0. 테이블의 두 마스킹 정책이 동일한 가중치를 가질 수 없습니다. | 

**반환 유형**:

없음

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

**인수**


| 파라미터 | 데이터 형식 | 설명 | 
| --- | --- | --- | 
| policy\_name | NAME | 마스킹 정책의 기존 이름입니다. | 
| table\_name | REGCLASS | 마스킹 정책이 포함된 테이블의 정규화된/비정규화된 이름입니다. | 
| 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)
```

**인수**


| 파라미터 | 데이터 형식 | 설명 | 
| --- | --- | --- | 
| policy\_name | NAME | 마스킹 정책의 기존 이름입니다. | 
| table\_name | REGCLASS | 마스킹 정책이 포함된 테이블의 정규화된/비정규화된 이름입니다. | 

**반환 유형**:

없음

**Example 마스킹 정책 customer\_mask 삭제**  

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