

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# CREATE RLS POLICY
<a name="r_CREATE_RLS_POLICY"></a>

创建新的行级安全策略以提供对数据库对象的精细访问。

超级用户和具有 sys:secadmin 角色的用户或角色可以创建策略。

## 语法
<a name="r_CREATE_RLS_POLICY-synopsis"></a>

```
CREATE RLS POLICY { policy_name | database_name.policy_name }
[ WITH (column_name data_type [, ...]) [ [AS] relation_alias ] ]
USING ( using_predicate_exp )
```

## 参数
<a name="r_CREATE_RLS_POLICY-parameters"></a>

 *policy\$1name*   
策略的名称。

database\$1name  
将在其中创建策略的数据库的名称。可以在连接的数据库或支持 Amazon Redshift 联合身份验证权限的数据库上创建策略。

WITH (*column\$1name data\$1type [, ...]*)   
指定 *column\$1name* 和 *data\$1type* 引用策略附加到的表的列。  
仅当 RLS 策略没有引用策略附加到的表的任何列时，您才可以省略 WITH 子句。

AS *relation\$1alias*  
为 RLS 策略将附加到的表指定可选别名。

USING (* using\$1predicate\$1exp *)  
指定应用于查询的 WHERE 子句的筛选器。Amazon Redshift 会在查询级别的用户谓词之前应用策略谓词。例如，**current\$1user = ‘joe’ and price > 10** 限制 Joe 只能查看价格高于 10 美元的记录。

有关在 Amazon Redshift 联合身份验证权限目录上使用 CREATE RLS POLICY 的信息，请参阅[使用 Amazon Redshift 联合身份验证权限管理访问控制](https://docs.aws.amazon.com/redshift/latest/dg/federated-permissions-managing-access.html)。

## 使用说明
<a name="r_CREATE_RLS_POLICY-usage"></a>

在使用 CREATE RLS POLICY 语句时，请遵守以下规则：
+ Amazon Redshift 支持可以作为查询的 WHERE 子句的组成部分的筛选器。
+ 所有附加到表的策略都必须使用相同的表别名创建。
+ 您必须使用 GRANT 和 REVOKE 语句来显式授予和撤消对引用查找表的 RLS 策略的 SELECT 权限。查找表是在策略定义中使用的表对象。有关更多信息，请参阅[GRANT](r_GRANT.md)和[REVOKE](r_REVOKE.md)。
+ Amazon Redshift 行级安全性不支持策略定义中的以下对象类型：目录表、跨数据库关系、外部表、常规视图、后期绑定视图、已开启 RLS 策略的表以及临时表。

## 示例
<a name="r_CREATE_RLS_POLICY-examples"></a>

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

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

有关使用 RLS 策略的端到端示例，请参阅[行级安全性端到端示例](t_rls-example.md)。