本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 的記錄。
使用須知
使用 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');