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_name と data_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 ポリシーを使用するエンドツーエンドの例については、「」を参照してください。