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 句の一部となるフィルタをサポートしています。
テーブルにアタッチされるすべてのポリシーは、同じテーブルエイリアスで作成されている必要があります。
ルックアップテーブルには SELECT 許可は必要ありません。ポリシーを作成するとき、Amazon Redshift はそれぞれのポリシーのルックアップテーブルに対する SELECT 許可を付与します。ルックアップテーブルは、ポリシー定義内で使用されるテーブルオブジェクトです。
Amazon Redshift の行レベルセキュリティは、ポリシー定義内の以下のオブジェクトタイプをサポートしていません: カタログテーブル、データベース間の関係、外部テーブル、通常のビュー、遅延バインディングビュー、RLS ポリシーがオンになっているテーブル、一時テーブル。
例
次の SQL 文は、CREATE RLS POLICY の例に対してテーブル、ユーザー、ロールを作成します。
-- Create users and roles reference in the policy statements. CREATE ROLE analyst; CREATE ROLE consumer; CREATE USER bob WITH PASSWORD 'Name_is_bob_1'; CREATE USER alice WITH PASSWORD 'Name_is_alice_1'; CREATE USER joe WITH PASSWORD 'Name_is_joe_1'; GRANT ROLE sys:secadmin TO bob; GRANT ROLE analyst TO alice; GRANT ROLE consumer TO joe; GRANT ALL ON TABLE tickit_category_redshift TO PUBLIC;
次の例では、policy_concerts というポリシーを作成します。
CREATE RLS POLICY policy_concerts WITH (catgroup VARCHAR(10)) USING (catgroup = 'Concerts');