カテゴリ:

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

ALTER MASKING POLICY

既存のマスキングポリシールールを新しいルールまたは新しいコメントで置き換え、マスキングポリシーの名前を変更できるようにします。

ポリシールールに加えられた変更は、マスキングポリシーを使用する次の SQL クエリが実行されるときに有効になります。

こちらもご参照ください。

マスキングポリシー DDL

構文

ALTER MASKING POLICY [ IF EXISTS ] <name> SET BODY -> <expression_on_arg_name>

ALTER MASKING POLICY [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER MASKING POLICY [ IF EXISTS ] <NAME> SET COMMENT = '<string_literal>'

パラメーター

name

マスキングポリシーの識別子。ポリシーの親スキーマで一意である必要があります。

識別子の値はアルファベットで始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

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

expression_on_arg_name

データを変換する SQL 式。

式には、 条件式関数 を含めて条件付きロジック、組み込み関数を表すか、 UDFs を含めてデータを変換することができます。

マスキングポリシー本体内で UDF または外部関数が使用されている場合、ポリシー所有者は UDF または外部関数に USAGE 権限を持っている必要があります。マスキングポリシーが適用されている列をクエリするユーザーは、 UDF または外部関数に USAGE を持っている必要はありません。

条件付きマスキングポリシー本体内で UDF または外部関数が使用されている場合、ポリシー所有者は UDF または外部関数に OWNERSHIP 権限を持っている必要があります。条件付きマスキングポリシーが適用されている列をクエリするユーザーは、 UDF または外部関数に USAGE を持っている必要はありません。

RENAME TO new_name

マスキングポリシーの新しい識別子を指定します。スキーマに対して一意である必要があります。識別子が別のマスキングポリシーにすでに配置されている場合、新しい識別子は使用できません。

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

オプションでオブジェクトの名前を変更して、オブジェクトを別のデータベースやスキーマに移動できます。これを実行するには、新しいデータベース名やスキーマ名をそれぞれ db_name.schema_name.object_name または schema_name.object_name の形式で含む、修飾された new_name 値を指定します。

注釈

  • 宛先データベースやスキーマはすでに存在している必要があります。また、同じ名前のオブジェクトが宛先データベースにすでに存在することはできません。存在する場合、ステートメントはエラーを返します。

  • オブジェクトをマネージドアクセススキーマに移動することは、オブジェクトの所有者(つまり、オブジェクトに対して OWNERSHIP 権限を持つロール)がターゲットスキーマも所有している場合を 除き 禁止されています。

COMMENT = 'string_literal'

マスキングポリシーのコメントを追加するか、既存のコメントを上書きします。

デフォルト: 値なし

アクセス制御の要件

この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

メモ

OWNERSHIP

マスキングポリシー

OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege).

スキーマ内の任意のオブジェクトを操作するには、親データベースとスキーマに対する USAGE 権限も必要であることに注意してください。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 Snowflakeのアクセス制御 をご参照ください。

マスキングポリシー DDL と権限の詳細については、 列レベルのセキュリティの管理 をご参照ください。

使用上の注意

  • 既存のマスキングポリシーを更新するために、ポリシーの現在の定義を確認する必要がある場合は、 GET_DDL 関数を呼び出すか、 DESCRIBE MASKING POLICY コマンドを実行します。

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

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

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

  • 列が行アクセスポリシーによって参照されている場合は、列へのマスキングポリシーの追加に失敗します。詳細については、 ALTER ROW ACCESS POLICY をご参照ください。

  • マスキングポリシーで UDF を使用する場合は、列、 UDF、およびマスキングポリシーのデータ型が一致していることを確認します。詳細については、 マスキングポリシー内のユーザー定義関数 をご参照ください。

  • メタデータについて。

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

次の例では、 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;
最上部に戻る