カテゴリ:

テーブル、ビュー、シーケンス DDL

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 新しい名前

ロールの新しい識別子を指定します。アカウントに対して一意である必要があります。

詳細については、 識別子の要件 をご参照ください。

使用上の注意

  • ポリシーの署名(つまり、引数名または入出力データ型)を変更することはできません。署名を変更する必要がある場合は、ポリシーで DROP MASKING POLICY ステートメントを実行し、新しいステートメントを作成します。

  • ALTER ステートメントを実行する前に、 DESCRIBE MASKING POLICY ステートメントを実行して、ポリシーの更新に使用する引数名を決定できます。

  • マスキングポリシー本文にサブクエリを含むマスキングポリシーの場合は、 WHEN 句で EXISTS を使用します。代表的な例については、 CREATE MASKING POLICY の「例」セクションにある、カスタム資格テーブルの例をご参照ください。

次の例では、 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;