- カテゴリ:
ALTER MASKING POLICY¶
既存のマスキングポリシールールを新しいルールまたは新しいコメントで置き換え、マスキングポリシーの名前を変更できるようにします。
ポリシールールに加えられた変更は、マスキングポリシーを使用する次の SQL クエリが実行されるときに有効になります。
構文¶
ALTER MASKING POLICY [ IF EXISTS ] <name> SET BODY -> <expression_ON_VAL> [ COMMENT = '<string_literal>' ]
ALTER MASKING POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
パラメーター¶
名前
マスキングポリシーの識別子。アカウントに対して一意である必要があります。
識別子の値はアルファベットで始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object"
)。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
式 ON_VAL
データを変換するSQL式。
式には、条件付きロジックを表す 条件式関数、組み込み関数、またはデータを変換する UDFs を含めることができます。
マスキングポリシー本体内で UDF または外部関数が使用されている場合、ポリシー所有者は UDF または外部関数に OWNERSHIP を持っている必要があります。マスキングポリシーが適用されている列をクエリするユーザーは、 UDF または外部関数に USAGE を持っている必要はありません。
RENAME TO 新しい名前
ロールの新しい識別子を指定します。アカウントに対して一意である必要があります。
詳細については、 識別子の要件 をご参照ください。
使用上の注意¶
既存のマスキングポリシーを更新するために、ポリシーの現在の定義を確認する必要がある場合は、 GET_DDL 関数を呼び出すか、 DESCRIBE MASKING POLICY コマンドを実行します。
ポリシーの署名(つまり、引数名または入出力データ型)を変更することはできません。署名を変更する必要がある場合は、ポリシーで DROP MASKING POLICY ステートメントを実行し、新しいステートメントを作成します。
ALTER ステートメントを実行する前に、 DESCRIBE MASKING POLICY ステートメントを実行して、ポリシーの更新に使用する引数名を決定できます。
マスキングポリシー本文にサブクエリを含むマスキングポリシーの場合は、 WHEN 句で EXISTS を使用します。代表的な例については、 CREATE MASKING POLICY の「例」セクションにある、カスタム資格テーブルの例をご参照ください。
マスキングポリシーをマネージドアクセススキーマに(ALTER MASKING POLICY ... RENAME TO 構文を使用して)移動することは、マスキングポリシーの所有者(つまり、マスキングポリシーの OWNERSHIP 権限を持つロール)がターゲットスキーマも所有して いない限り 禁止されています。
例¶
次の例では、 SHA-512ハッシュを使用するようにマスキングポリシーを更新します。ANALYST のロールを持たないユーザーには、値が SHA-512ハッシュとして表示されますが、 ANALYST のロールを持つユーザーには、平文の値が表示されます。
DESCRIBE MASKING POLICY email_mask;
-- evaluate output
+-----+------------+---------------+-------------------+-----------------------------------------------------------------------+
| Row | name | signature | return_type | body |
+-----+------------+---------------+-------------------+-----------------------------------------------------------------------+
| 1 | EMAIL_MASK | (VAL VARCHAR) | VARCHAR(16777216) | case when current_role() in ('ANALYST') then val else '*********' end |
+-----+------------+---------------+-------------------+-----------------------------------------------------------------------+
ALTER MASKING POLICY email_mask SET BODY ->
CASE
WHEN current_role() IN ('ANALYST') THEN VAL
ELSE sha2(val, 512)
END;