CREATE RLS POLICY - Amazon Redshift

从 2025 年 11 月 1 日起,Amazon Redshift 将不再支持创建新的 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_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 子句的组成部分的筛选器。

  • 所有附加到表的策略都必须使用相同的表别名创建。

  • 您必须使用 GRANT 和 REVOKE 语句来显式授予和撤消对引用查找表的 RLS 策略的 SELECT 权限。查找表是在策略定义中使用的表对象。有关更多信息,请参阅GRANTREVOKE

  • Amazon Redshift 行级安全性不支持策略定义中的以下对象类型:目录表、跨数据库关系、外部表、常规视图、后期绑定视图、已开启 RLS 策略的表以及临时表。

示例

以下示例创建一个名为 policy_concerts 的 RLS 策略。此策略应用于名为 catgroup 的 VARCHAR(10) 列,并将 USING 筛选条件设置为仅返回 catgroup 值为 'Concerts' 的行。

CREATE RLS POLICY policy_concerts WITH (catgroup VARCHAR(10)) USING (catgroup = 'Concerts');

有关使用 RLS 策略的端到端示例,请参阅