REVOKE - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

REVOKE

从用户或用户组删除访问权限,例如,用于创建、删除或更新表的权限。

您只能使用 ON SCHEMA 语法将针对外部架构的 GRANT 或 REVOKE USAGE 权限授予数据库用户和用户组。将 ON EXTERNAL SCHEMA 与 Amazon Lake Formation 搭配使用时,您只能向 Amazon Identity and Access Management (IAM) 角色授予 GRANT 和 REVOKE 权限。有关权限的列表,请参阅语法。

对于存储过程,默认情况下,向 PUBLIC 授予 USAGE ON LANGUAGE plpgsql 权限。EXECUTE ON PROCEDURE 权限默认情况下只授予拥有者和超级用户。

在 REVOKE 语句中指定要删除的权限。要授予权限,请使用 GRANT 命令。

Syntax

REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] EXECUTE ON FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { EXECUTE } [,...] | ALL [ PRIVILEGES ] } ON PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] USAGE ON LANGUAGE language_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]

以下是 Amazon Redshift 表和视图上的列级权限的语法。

REVOKE { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]

以下是撤消具有指定角色的用户和组的 ASSUMEROLE 权限的语法。

REVOKE ASSUMEROLE ON { 'iam_role' [, ...] | ALL } FROM { user_name | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL }

以下是 Redshift Spectrum 与 Lake Formation 集成的语法。

REVOKE [ GRANT OPTION FOR ] { SELECT | ALL [ PRIVILEGES ] } ( column_list ) ON EXTERNAL TABLE schema_name.table_name FROM { IAM_ROLE iam_role } [, ...] REVOKE [ GRANT OPTION FOR ] { { SELECT | ALTER | DROP | DELETE | INSERT } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL TABLE schema_name.table_name [, ...] FROM { { IAM_ROLE iam_role } [, ...] | PUBLIC } REVOKE [ GRANT OPTION FOR ] { { CREATE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL SCHEMA schema_name [, ...] FROM { IAM_ROLE iam_role } [, ...]

以下是使用 REVOKE 获取 Amazon Redshift 的数据共享权限的语法。

REVOKE { ALTER | SHARE } ON DATASHARE datashare_name FROM { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

以下是使用 REVOKE 获取 Amazon Redshift 的数据共享使用权限的语法。

REVOKE USAGE ON DATASHARE datashare_name FROM NAMESPACE 'namespaceGUID' [, ...] | ACCOUNT 'accountnumber' [, ...]

以下是根据数据共享创建的特定数据库或 schema 的 REVOKE 数据共享使用权限的语法。此 USAGE 权限不会撤销非从指定数据共享创建的数据库的使用权限。您只能将针对数据共享的权限 REVOKE、ALTER 或 SHARE 给用户和用户组。

REVOKE USAGE ON { DATABASE shared_database_name [, ...] | SCHEMA shared_schema} FROM { username | GROUP group_name | PUBLIC } [, ...]

以下是 Amazon Redshift 上的机器学习模型权限的语法。

REVOKE [ GRANT OPTION FOR ] CREATE MODEL FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON MODEL model_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]

Parameters

GRANT OPTION FOR

仅撤消将指定权限授予其他用户的选项,而不撤消权限本身。您无法从组或 PUBLIC 撤消 GRANT OPTION。

SELECT

撤消用于通过 SELECT 语句从表或视图中选择数据的权限。

INSERT

撤消用于通过 INSERT 语句或 COPY 语句将数据加载到表中的权限。

UPDATE

撤消用于通过 UPDATE 语句更新表列的权限。

DELETE

撤消用于从表中删除数据行的权限。

REFERENCES

撤消用于创建外键约束的权限。您应该在被引用表和引用表上撤消此权限。

ALL [ PRIVILEGES ]

一次性从指定的用户或组撤消所有可用权限。PRIVILEGES 关键字是可选的。

ALTER

撤销更改为 Lake Formation 启用的 Amazon Glue Data Catalog 中的表的权限。此权限仅在使用 Lake Formation 时适用。

DROP

撤销删除表的权限。此权限适用于 Amazon Redshift 和为 Lake Formation 启用的 Amazon Glue Data Catalog 中。

ASSUMEROLE

撤销从具有指定角色的用户和组运行 COPY、UNLOAD、EXTERNAL FUNCTION 或 CREATE MODEL 命令的权限。

ON [ TABLE ] table_name

撤消对表或视图的指定权限。TABLE 关键字是可选的。

ON ALL TABLES IN SCHEMA schema_name

撤消对被引用 schema 中的所有表的指定权限。

( column_name [,...] ) ON TABLE table_name

撤消用户、组或 PUBLIC 对 Amazon Redshift 表或视图的指定列的指定权限。

( column_list ) ON EXTERNAL TABLE schema_name.table_name

从 IAM 角色撤销对于引用架构中 Lake Formation 表的指定列的指定权限。

ON EXTERNAL TABLE schema_name.table_name

从 IAM 角色撤销对于引用架构中的指定 Lake Formation 表的指定权限。

ON EXTERNAL SCHEMA schema_name

从 IAM 角色撤消对于引用架构的指定权限。

FROM IAM_ROLE iam_role

指示丢失权限的 IAM 角色。

GROUP group_name

从指定的用户组撤消权限。

PUBLIC

从所有用户撤消指定的权限。PUBLIC 表示一个始终包含所有用户的组。单个用户的权限包含向 PUBLIC 授予的权限、向用户所属的所有组授予的权限以及向用户单独授予的任何权限。

从 Lake Formation 外部表中撤销 PUBLIC 会将该权限从 Lake Formation 所有人组撤销。

CREATE

根据数据库对象,从用户或组撤消以下权限:

  • 对于数据库,对 REVOKE 使用 CREATE 子句将阻止用户在数据库中创建 schema。

  • 对于 schemas,对 REVOKE 使用 CREATE 子句将阻止用户在 schema 中创建对象。要重命名对象,用户必须具有 CREATE 权限并拥有要重命名的对象。

注意

默认情况下,所有用户都对 PUBLIC schema 具有 CREATE 和 USAGE 权限。

TEMPORARY | TEMP

撤消用于在指定的数据库中创建临时表的权限。

注意

默认情况下,向用户授予权限以通过其在 PUBLIC 组中自动获得的成员资格来创建临时表。要为任何用户删除用于创建临时表的权限,请撤消 PUBLIC 组的 TEMP 权限,然后明确向特定用户或用户组授予用于创建临时表的权限。

ON DATABASE db_name

撤消对指定数据库的权限。

USAGE

撤消对特定 schema 中的对象的 USAGE 权限,这将使用户无法访问这些对象。必须单独撤消这些对象的特定操作(例如,对函数的 EXECUTE 权限)。

注意

默认情况下,所有用户都对 PUBLIC schema 具有 CREATE 和 USAGE 权限。

ON SCHEMA schema_name

撤消对指定 schema 的权限。您可以使用 schema 权限来控制表的创建;数据库的 CREATE 权限仅控制 schema 的创建。

CASCADE

如果用户拥有带授予选项的权限并且已向其他用户授予权限,则这些其他用户拥有的权限是关联权限。如果将撤消第一个用户拥有的权限或授予选项并且存在关联权限,则在指定 CASCADE 的情况下也会撤消这些关联权限;否则,撤消操作将失败。

例如,如果用户 A 已将带授予选项的权限授予用户 B,而用户 B 已将权限授予用户 C,则用户 A 可以从用户 B 撤消授予选项,并在使用 CASCADE 选项的情况下又会从用户 C 撤消权限。

RESTRICT

仅撤消用户直接授予的那些权限。此行为是默认行为。

EXECUTE ON FUNCTION function_name

撤销特定函数的 EXECUTE 权限。由于函数名可重载,因此您必须包含函数的参数列表。有关更多信息,请参阅对 UDF 命名

EXECUTE ON PROCEDURE procedure_name

撤销对特定存储过程的 EXECUTE 权限。由于存储过程名称可重载,因此您必须包含过程的参数列表。有关更多信息,请参阅命名存储过程

EXECUTE ON ALL PROCEDURES IN SCHEMA procedure_name

撤销对被引用 schema 中的所有过程的指定权限。

USAGE ON LANGUAGE language_name

撤消语言的 USAGE 权限。对于 Python 用户定义的函数 (UDF),请使用 plpythonu。对于 SQL UDF,使用 sql。对于存储过程,请使用 plpgsql

要创建 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 撤销使用权限。然后,仅向允许创建存储过程的特定用户或组授予 plpgsql 使用权限。有关更多信息,请参阅存储过程的安全性和权限

FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...]

指定撤消其权限的 SQL 命令。您可以指定 ALL 以撤销对 COPY、UNLOAD、EXTERNAL FUNCTION 和 CREATE MODEL 语句的权限。此子句仅适用于撤销 ASSUMEROLE 权限。

ALTER

撤消用户或用户组的 ALTER 权限,允许那些不拥有数据共享的用户或用户组更改数据共享。将对象添加到数据共享中或从中删除,或设置属性 PUBLICACCESSIBLE 时需要此权限。有关更多信息,请参阅ALTER DATASHARE

SHARE

撤销用户和用户组将使用者添加到数据共享的权限。需要撤销此权限才能阻止特定使用者从其集群访问数据共享。

ON DATASHARE datashare_name

授予对被引用数据共享的指定权限。

FROM 用户名

指示丢失权限的用户。

FROM GROUP group_name

指示丢失权限的用户组。

WITH GRANT OPTION

指示丢弃权限的用户反过来可以撤销其他人的相同权限。您无法为组或 PUBLIC 撤消 WITH GRANT OPTION。

USAGE

撤销同一账户中的使用者账户或命名空间的 USAGE 时,该账户中的特定使用者账户或命名空间不能以只读方式访问数据共享和数据共享的对象。

撤消 USAGE 权限将撤消使用者对数据共享的访问权限。

FROM NAMESPACE 'clusternamespace GUID'

指示同一账户中使用者丢失对数据共享的权限的命名空间。命名空间使用 128 位字母数字全局唯一标识符 (GUID)。

FROM ACCOUNT 'accountnumber'

指示另一个账户中使用者丢失对数据共享的权限的账户编号。

ON DATABASE shared_database_name> [, ...]

撤销对在指定数据共享中创建的指定数据库的指定使用权限。

ON SCHEMA shared_schema

撤销对在指定数据共享中创建的指定 schema 的指定权限。

CREATE MODEL

撤消 CREATE MODEL 在指定数据库中创建机器学习模型的权限。

ON MODEL model_name

撤销特定模型的 EXECUTE 权限。