マスキングポリシー DDL プロシージャでの識別子のエスケープ
引用符で囲まれた識別子を使用してデータマスキングポリシーを作成する場合、正しいオブジェクト参照とポリシーアプリケーションを確保するために、適切なエスケープが必要です。pg_columnmask マスキングポリシー管理手順内で引用符で囲まれた識別子を使用するには:
ポリシー名 – 二重引用符で囲む必要があります。
テーブル名 – スキーマ名とテーブル名は、必要に応じて二重引用符で個別に囲む必要があります。
マスキング式 – マスキング式の列名と関数名は二重引用符で囲む必要があり、引用符自体はバックスラッシュを使用してエスケープする必要があります。
ロール – ロール名の配列は自動的に引用符で囲まれます。ロール名は、大文字と小文字の区別を含めて、「
pg_roles」に示されている名前と完全に一致する必要があります。
例エスケープ構文と引用構文
この例では、Aurora PostgreSQL で大文字と小文字が混在する名前を使用する、または引用符で囲まれた識別子を必要とするテーブル、列、関数、ロールのマスキングポリシーを作成する際の適切なエスケープ構文と引用構文を示します。
-- Create a table and columns with mixed case name CREATE TABLE public."Employees" ( "Name" TEXT, "Email" TEXT, ssn VARCHAR(20) ); -- Create a role with mixed case name CREATE ROLE "Masked_user"; -- Create a function with mixed case name CREATE OR REPLACE FUNCTION public."MaskEmail"(text) RETURNS character varying LANGUAGE plpgsql IMMUTABLE PARALLEL SAFE AS $$ BEGIN RETURN 'XXXXXXXX'::text; END $$; -- Now use these objects with mixed case names in -- masking policy management procedures CALL pgcolumnmask.create_masking_policy( '"Policy1"', -- policy name should be surrounded with double quotes for quoting 'public."Employees"', -- table and schema name should be individually -- surrounded with double quotes for quoting JSON_OBJECT('{ "\"Email\"", "\"MaskEmail\"(\"Email\")" }')::JSONB, -- masking expression should have double quotes around function names -- and columns names etc when needed. Also the double quotes itself -- should be escaped using \ (backslash) since this is a JSON string ARRAY['Masked_user'], -- Rolename do not need quoting -- (this behaviour may change in future release) 100 ); SELECT * FROM pgcolumnmask.pg_columnmask_policies WHERE tablename = 'Employees'; -[ RECORD 1 ]-----+------------------------------------- schemaname | public tablename | Employees policyname | Policy1 roles | {Masked_user} masked_columns | {Email} masking_functions | {"(\"MaskEmail\"(\"Email\"))::text"} weight | 100
管理ビュー
パブリックにアクセス可能な pgcolumnmask.pg_columnmask_policies 管理ビューを使用して、すべての pg_columnmask ポリシーを確認できます。このビューでは、次の情報を使用できます。ビューは、現在のユーザーが所有するマスキングポリシーのみを返します。
| 列名 | データ型 | 説明 |
|---|---|---|
|
schemaname |
NAME |
ポリシーがアタッチされているリレーションのスキーマ |
|
tablename |
NAME |
ポリシーがアタッチされているリレーションの名前 |
|
policyname |
NAME |
マスキングポリシーの名前。すべてのマスキングポリシーには一意の名前があります。 |
|
ロール |
TEXT[] |
ポリシーが適用されるロール。 |
|
masked_columns |
TEXT[] |
マスクされた列 |
|
masking_functions |
TEXT[] |
マスキング関数 |
| weight | INT |
アタッチされたポリシーの重み |