

 从补丁 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/)。

# UDF 安全性和权限
<a name="udf-security-and-privileges"></a>

要创建 UDF，您必须具有使用 SQL 或 plpythonu (Python) 语言的权限。默认情况下，向 PUBLIC 授予 USAGE ON LANGUAGE SQL 权限，但是，您必须明确授予 USAGE ON LANGUAGE PLPYTHONU 权限才能指定用户或组。

要撤销 SQL 的使用权限，请先从 PUBLIC 撤销使用权限。然后，仅向允许创建 SQL UDF 的特定用户或组授予 SQL 使用权限。以下示例从 PUBLIC 撤销对 SQL 的使用权限。然后它会向用户组 `udf_devs` 授予使用权限。

```
revoke usage on language sql from PUBLIC;
grant usage on language sql to group udf_devs;
```

要执行 UDF，您必须拥有每个函数的执行权限。预设情况下，向 PUBLIC 授予运行新 UDF 的权限。要限制使用，请从 PUBLIC 撤销该函数的此权限。然后向特定的个人或组授予权限。

以下示例从 PUBLIC 撤销对函数 `f_py_greater` 的执行权限。然后它会向用户组 `udf_devs` 授予使用权限。

```
revoke execute on function f_py_greater(a float, b float) from PUBLIC;
grant execute on function f_py_greater(a float, b float) to group udf_devs;
```

默认情况下，超级用户拥有全部权限。

有关更多信息，请参阅[GRANT](r_GRANT.md)和[REVOKE](r_REVOKE.md)。