CREATE RLS POLICY - Amazon Redshift

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');