ALTER ROW ACCESS POLICY

ポリシーの名前変更やポリシールールの置き換えなど、既存の行アクセスポリシーのプロパティを変更します。

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

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

行アクセスポリシー DDL

構文

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

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

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> UNSET COMMENT
Copy

パラメーター

name

行アクセスポリシーの識別子。ポリシーの親スキーマ内において一意である必要があります。

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

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

RENAME TO new_name

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

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

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

注釈

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

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

SET ...

行アクセスポリシーに設定する1つ(または複数)のプロパティを指定します。

BODY -> expression_on_arg_name

データをフィルターする SQL 式。

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

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

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

タグ の名前とタグ文字列の値を指定します。

タグ値は常に文字列であり、タグ値の最大文字数は256です。

ステートメントでのタグの指定に関する情報については、 オブジェクトのタグクォータ をご参照ください。

COMMENT = 'string_literal'

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

デフォルト: 値なし

UNSET ...

マスキングポリシーの設定を解除する1つまたは複数のプロパティ、パラメーター、またはその両方を指定します。これにより、これらはデフォルトにリセットされます。

  • TAG tag_name [ , tag_name ... ]

  • COMMENT

プロパティ/パラメーターをリセットするときは、名前のみを指定します。プロパティの値を指定すると、エラーが返されます。

アクセス制御の要件

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

権限

オブジェクト

注意

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 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。

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

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

行アクセスポリシー DDL と権限の詳細については、 行アクセスポリシーを管理する をご参照ください。

使用上の注意

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

  • ポリシーの署名(つまり、引数名または入出力データ型)を変更することはできません。同様に、ポリシーがテーブルまたはビューにアタッチされている場合の、 CREATE OR REPLACE ROW ACCESS POLICY の使用はサポートされていません。署名を変更する必要がある場合は、ポリシーで DROP ROW ACCESS POLICY ステートメントを実行し、新しい行アクセスポリシーを作成します。

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

  • ポリシー本体に1つ以上の サブクエリ を含めると、エラーが発生する可能性があります。可能であれば、サブクエリの数を制限し、 JOIN 操作の数を制限し、 WHERE 句の条件を単純化します。

  • ポリシー body にマッピングテーブルルックアップが含まれている場合は、一元化されたマッピングテーブルを作成し、保護されたテーブルと同じデータベースにマッピングテーブルを格納します。これは、 bodyIS_DATABASE_ROLE_IN_SESSION 関数を呼び出す場合に特に重要です。詳細については、関数の使用上の注意をご参照ください。

  • メタデータについて、

    注意

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

次の例では、行アクセスポリシーを更新します。

DESC ROW ACCESS POLICY rap_table_employee_info;
Copy
+-------------------------+-------------+-------------+------+
| name                    | signature   | return_type | body |
+-------------------------+-------------+-------------+------+
| rap_table_employee_info | (V VARCHAR) | BOOLEAN     | true |
+-------------------------+-------------+-------------+------+
ALTER ROW ACCESS POLICY rap_table_employee_info SET BODY -> false;
Copy