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_namedata_type

只有在RLS政策未參考附加政策之資料表的任何資料欄時,您才能省略WITH子句。

AS relation_alias

為要連接RLS政策的資料表指定選用別名。

USING ( using_predicate_exp

指定套用至查詢子WHERE句的篩選條件。Amazon Redshift 會在查詢層級使用者述詞之前套用政策述詞。例如,current_user = ‘joe’ and price > 10 會限制 Joe 只能查看價格大於 $10 的記錄。

使用須知

使用 CREATE RLS POLICY 陳述式時,請遵循下列事項:

  • Amazon Redshift 支援篩選條件,這些篩選條件可能是查詢子WHERE句的一部分。

  • 所有附加至資料表的政策都必須使用相同的資料表別名建立。

  • 您不需要查詢資料表的SELECT許可。當您建立政策時,Amazon Redshift 會授予個別政策查詢表的SELECT許可。查閱資料表是在政策定義中使用的資料表物件。

  • Amazon Redshift 資料列層級安全性不支援政策定義中的下列物件類型:目錄資料表、跨資料庫關係、外部資料表、一般檢視、繫結延遲檢視、開啟RLS政策的資料表,以及暫存資料表。

範例

下列SQL陳述式會建立CREATERLSPOLICY範例的資料表、使用者和角色。

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