データマスキングポリシーを管理する手順
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
次の手順では、ユーザーテーブルの新しいマスキングポリシーを作成します。
構文
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 |
マスキングポリシーの重み。特定のユーザーのクエリに複数のポリシーが適用される場合、重みが最も大きいポリシー (整数数が高い) がマスクされた各列に適用されます。 デフォルトは 0 です。テーブル上の 2 つのマスキングポリシーが同じ重みを持つことはできません。 |
戻り値の型:
なし
例 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
この手順では、既存のマスキングポリシーを変更します。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 の新しい重み。 |
戻り値の型:
なし
例 他のポリシー属性を変更せずに、アナリストロールを既存のマスキングポリシーに追加する。
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
この手順では、既存のマスキングポリシーを削除します。
構文
drop_masking_policy( policy_name, table_name)
引数
| パラメータ | Datatype | 説明 |
|---|---|---|
policy_name |
NAME |
既存のマスキングポリシーの名前。 |
table_name |
REGCLASS |
マスキングポリシーを含むテーブルの修飾/非修飾名 oid。 |
戻り値の型:
なし
例 マスキングポリシー customer_mask の削除
-- Drop a masking policy CALL pgcolumnmask.drop_masking_policy( 'customer_mask', 'public.customers', );