カテゴリ:

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

ALTER ROW ACCESS POLICY

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

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

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

テーブル、ビュー、シーケンス DDLCREATE ROW ACCESS POLICYDROP ROW ACCESS POLICYSHOW ROW ACCESS POLICIESDESCRIBE ROW ACCESS POLICY

このトピックの内容:

構文

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

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

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

パラメーター

名前

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

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

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

ON_VAL

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

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

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

COMMENT = '文字列リテラル'

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

デフォルト: 値なし

RENAME TO 新しい名前

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

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

アクセス制御の要件

この 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 ROW ACCESS POLICY コマンドを実行します。

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

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

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

  • 行アクセスポリシーをマネージドアクセススキーマに(ALTER ROW ACCESSPOLICY ... RENAME TO 構文を使用して)移動することは、行アクセスポリシーの所有者(つまり、行アクセスポリシーの OWNERSHIP 権限を持つロール)がターゲットスキーマも所有している場合を 除き、禁止されています。

  • メタデータについて。

    注意

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

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

-- determine current definition

desc row access policy rap_table_employee_info;

+-------------------------+-------------+-------------+------+
| name                    | signature   | return_type | body |
+-------------------------+-------------+-------------+------+
| rap_table_employee_info | (V VARCHAR) | BOOLEAN     | true |
+-------------------------+-------------+-------------+------+

alter row access policy rap_table_employee_info set body -> false;
最上部に戻る