マスキングポリシー DDL プロシージャでの識別子のエスケープ - Amazon Aurora

マスキングポリシー 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

アタッチされたポリシーの重み