

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

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

要撤消对象的权限，您必须满足下列条件之一：
+ 是对象所有者。
+ 是超级用户。
+ 拥有该对象和权限的授予权限。

  例如，以下命令使用户 HR 能够对 employees 表执行 SELECT 命令并对其他用户授予和撤销相同的权限。

  ```
  grant select on table employees to HR with grant option;
  ```

  HR 无法撤销 SELECT 之外的任何操作的权限或 employees 表之外的任何其他表的权限。

超级用户可以访问所有对象，不管设置对象权限的 GRANT 和 REVOKE 命令如何。

PUBLIC 表示一个始终包含所有用户的组。默认情况下，PUBLIC 的所有成员都对 PUBLIC schema 具有 CREATE 和 USAGE 权限。要限制任何用户对 PUBLIC schema 的权限，您必须首先从 PUBLIC 撤销对 PUBLIC schema 的所有权限，然后向特定用户或组授予权限。以下示例控制 PUBLIC schema 中的表创建权限。

```
revoke create on schema public from public;
```

要从 Lake Formation 表撤销权限，与表的外部架构关联的 IAM 角色必须有权撤销对外部表的权限。以下示例创建具有关联 IAM 角色 `myGrantor` 的外部架构。IAM 角色 `myGrantor` 有权撤销其他角色的权限。REVOKE 命令使用与外部架构关联的 IAM 角色 `myGrantor` 的权限来撤销对 IAM 角色 `myGrantee` 的权限。

```
create external schema mySchema
from data catalog
database 'spectrum_db'
iam_role 'arn:aws:iam::123456789012:role/myGrantor'
create external database if not exists;
```

```
revoke select
on external table mySchema.mytable
from iam_role 'arn:aws:iam::123456789012:role/myGrantee';
```

**注意**  
如果 IAM 角色在为 Lake Formation 启用的 AWS Glue Data Catalog 中也有 `ALL` 权限，则不会撤销 `ALL` 权限。只撤销 `SELECT` 权限。您可以在 Lake Formation 控制台中查看 Lake Formation 权限。

## 有关撤销 ASSUMEROLE 权限的使用说明
<a name="r_REVOKE-usage-notes-assumerole"></a>

以下使用说明适用于在 Amazon Redshift 中撤销 ASSUMEROLE 权限。

只有数据库超级用户才可以撤消用户和组的 ASSUMEROLE 权限。超级用户始终会保留 ASSUMEROLE 权限。

要为用户和组启用 ASSUMEROLE 的使用权限，超级用户要在集群上运行一次以下语句。要为用户和组启用 ASSUMEROLE 的使用权限，超级用户要在集群上将以下语句运行一次。

```
revoke assumerole on all from public for all;
```

## 有关撤销机器学习权限的使用说明
<a name="r_REVOKE-usage-notes-create-model"></a>

您不能直接授予或撤销与机器学习函数相关的权限。机器学习函数属于机器学习模型，其权限通过模型来控制。相反，您可以撤销与机器学习模型相关的权限。以下示例演示如何从与模型 `customer_churn` 关联的所有用户撤销运行权限。

```
REVOKE EXECUTE ON MODEL customer_churn FROM PUBLIC;
```

您还可以撤销某个用户对机器学习模型 `customer_churn` 的所有权限。

```
REVOKE ALL on MODEL customer_churn FROM ml_user;
```

如果架构中有机器学习函数，则授予或撤销与机器学习函数相关的 `EXECUTE` 权限将失败，即使该机器学习函数已通过 `GRANT EXECUTE ON MODEL` 获得 `EXECUTE` 权限。我们建议在使用 `CREATE MODEL` 命令时，通过单独的架构将机器学习函数单独保存在单独架构本身中。以下示例演示了如何执行此操作。

```
CREATE MODEL ml_schema.customer_churn
FROM customer_data
TARGET churn
FUNCTION ml_schema.customer_churn_prediction
IAM_ROLE default
SETTINGS (
 S3_BUCKET 'amzn-s3-demo-bucket'
);
```