CREATE RLS POLICY - Amazon Redshift

Amazon Redshift は、2025 年 11 月 1 日以降、新しい Python UDF の作成をサポートしなくなります。Python UDF を使用する場合は、その日付より前に UDF を作成してください。既存の Python UDF は引き続き通常どおり機能します。詳細については、ブログ記事を参照してください。

CREATE RLS POLICY

新しい行レベルのセキュリティポリシーを作成して、データベースオブジェクトへのきめ細かなアクセスを提供します。

スーパーユーザーと sys:secadmin ロールを持つユーザーまたはロールは、ポリシーを作成できます。

構文

CREATE RLS POLICY policy_name [ WITH (column_name data_type [, ...]) [ [AS] relation_alias ] ] USING ( using_predicate_exp )

パラメータ

policy_name

ポリシーの名前。

WITH (column_name data_type [, ...])

ポリシーがアタッチされているテーブルの列を参照対象の column_namedata_type を指定します。

RLS ポリシーがアタッチされているテーブルの列を参照対象としない場合に限り、WITH 句を省略できます。

AS relation_alias

RLS ポリシーをアタッチするテーブルにオプションのエイリアスを指定します。

USING (using_predicate_exp)

クエリの WHERE 句に適用されるフィルターを指定します。Amazon Redshift は、クエリレベルのユーザー述語より先にポリシー述語を適用します。例えば、current_user = ‘joe’ and price > 10 は Joe に対して価格が 10 USD を超えるレコードのみを表示するように制限します。

使用に関する注意事項

CREATE RLS POLICY ステートメントを操作するとき、次の点に注意してください。

  • Amazon Redshift は、クエリの WHERE 句の一部となるフィルタをサポートしています。

  • テーブルにアタッチされるすべてのポリシーは、同じテーブルエイリアスで作成されている必要があります。

  • ルックアップテーブルを参照する RLS ポリシーの SELECT 許可を明示的に付与および取り消すには、GRANT と REVOKE ステートメントを使用する必要があります。ルックアップテーブルは、ポリシー定義内で使用されるテーブルオブジェクトです。詳細については、「GRANT」および「REVOKE」を参照してください。

  • Amazon Redshift の行レベルセキュリティは、ポリシー定義内の以下のオブジェクトタイプをサポートしていません: カタログテーブル、データベース間の関係、外部テーブル、通常のビュー、遅延バインディングビュー、RLS ポリシーがオンになっているテーブル、一時テーブル。

次の例では、policy_concerts という RLS ポリシーを作成します。このポリシーは、catgroup という VARCHAR(10) 列に適用され、catgroup の値が 'Concerts' である行のみを返すように USING フィルターを設定します。

CREATE RLS POLICY policy_concerts WITH (catgroup VARCHAR(10)) USING (catgroup = 'Concerts');

RLS ポリシーを使用するエンドツーエンドの例については、「」を参照してください。