REVOKE - Amazon Redshift

REVOKE

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

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

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

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

语法

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

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

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

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

REVOKE ASSUMEROLE ON { 'iam_role' [, ...] | default | ALL } FROM { user_name | ROLE role_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 删除用户或角色的 ALTER 或 SHARE 权限的语法。权限已被撤销的用户无法再更改数据共享,也无法向使用者授予使用权限。

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

以下是使用 REVOKE 删除使用者对数据共享的访问权限的语法。

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

以下是从 Lake Formation 账户中撤销数据共享使用权限的示例。

REVOKE USAGE ON DATASHARE salesshare FROM ACCOUNT '123456789012' VIA DATA CATALOG;
使用者端数据共享权限

以下是根据数据共享创建的特定数据库或 schema 的 REVOKE 数据共享使用权限的语法。撤销使用 WITH PERMISSIONS 子句创建的数据库的使用权限并不能撤销您授予用户或角色的任何其他权限,包括为基础对象授予的对象级权限。如果您向该用户或角色重新授予使用权限,他们将保留在您撤销使用权限之前拥有的所有其他权限。

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

限定范围权限允许您向用户或角色授予对数据库或架构中某一类型的所有对象的访问权限。具有限定范围权限的用户和角色对数据库或架构中的所有当前和未来对象具有指定权限。

您可以在 SVV_DATABASE_PRIVILEGES 中查看数据库级限定权限的范围。您可以在 SVV_SCHEMA_PRIVILEGES 中查看架构级限定权限的范围。

以下是撤销用户和角色的限定范围权限的语法。有关范围限定权限的更多信息,请参阅限定范围权限

REVOKE [ GRANT OPTION ] { CREATE | USAGE | ALTER } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASE db_name FROM { username | ROLE role_name } [, ...] REVOKE [ GRANT OPTION ] { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [PRIVILEGES] } } FOR TABLES IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } FROM { username] | ROLE role_name} [, ...] REVOKE [ GRANT OPTION ] { EXECUTE | ALL [ PRIVILEGES ] } FOR FUNCTIONS IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } FROM { username | ROLE role_name | } [, ...] REVOKE [ GRANT OPTION ] { EXECUTE | ALL [ PRIVILEGES ] } FOR PROCEDURES IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } FROM { username | ROLE role_name | } [, ...] REVOKE [ GRANT OPTION ] USAGE FOR LANGUAGES IN {DATABASE db_name} FROM { username | ROLE role_name } [, ...]

请注意,范围限定的权限不区分函数的权限和过程的权限。例如,以下语句撤销 bob 对架构 Sales_schema 中函数和过程的 EXECUTE 权限。

REVOKE EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema FROM bob;

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

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

以下是撤销在 Amazon Redshift 上的角色权限的语法。

REVOKE [ ADMIN OPTION FOR ] { ROLE role_name } [, ...] FROM { user_name } [, ...]
REVOKE { ROLE role_name } [, ...] FROM { ROLE role_name } [, ...]

以下是撤销角色在 Amazon Redshift 上的系统权限的语法。

REVOKE { { CREATE USER | DROP USER | ALTER USER | CREATE SCHEMA | DROP SCHEMA | ALTER DEFAULT PRIVILEGES | ACCESS CATALOG | CREATE TABLE | DROP TABLE | ALTER TABLE | CREATE OR REPLACE FUNCTION | CREATE OR REPLACE EXTERNAL FUNCTION | DROP FUNCTION | CREATE OR REPLACE PROCEDURE | DROP PROCEDURE | CREATE OR REPLACE VIEW | DROP VIEW | CREATE MODEL | DROP MODEL | CREATE DATASHARE | ALTER DATASHARE | DROP DATASHARE | CREATE LIBRARY | DROP LIBRARY | CREATE ROLE | DROP ROLE TRUNCATE TABLE VACUUM | ANALYZE | CANCEL }[, ...] } | { ALL [ PRIVILEGES ] } FROM { ROLE role_name } [, ...]

以下语法用于撤消解释 EXPLAIN 计划中查询的行级别安全性策略筛选器的权限。您可以使用 REVOKE 语句撤消该权限。

REVOKE EXPLAIN RLS FROM ROLE rolename

以下语法用于授予为查询绕开行级别安全性策略的权限。

REVOKE IGNORE RLS FROM ROLE rolename

以下语法用于从指定的行级别安全性策略撤销权限。

REVOKE SELECT ON [ TABLE ] table_name [, ...] FROM RLS POLICY policy_name [, ...]

参数

GRANT OPTION FOR

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

SELECT

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

INSERT

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

UPDATE

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

删除

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

REFERENCES

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

TRUNCATE

撤销截断表的权限。如果没有此权限,则只有表的拥有者或超级用户才可以截断表。有关 TRUNCATE 命令的更多信息,请参阅 TRUNCATE

ALL [ PRIVILEGES ]

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

注意

Amazon Redshift 不支持 RULE 和 TRIGGER 权限。有关更多信息,请转至 不支持的 PostgreSQL 功能

ALTER

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

  • 对于表,ALTER 撤销更改表或视图的权限。有关更多信息,请参阅 ALTER TABLE

  • 对于数据库,ALTER 撤销更改更数据库的权限。有关更多信息,请参阅 ALTER DATABASE

  • 对于架构,ALTER 撤销更改模式的权限。有关更多信息,请参阅 ALTER SCHEMA

  • 对于外部表,ALTER 撤销对为 Lake Formation 启用的 AWS Glue Data Catalog 中的表进行更改的权限。此权限仅在使用 Lake Formation 时适用。

DROP

撤消对表的删除权限。此权限仅在 Amazon Redshift 以及为 Lake Formation 启用的 AWS 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 角色撤消对于引用的 Schema 中 Lake Formation 表的指定列的指定权限。

ON EXTERNAL TABLE schema_name.table_name

从 IAM 角色撤消对于引用的 Schema 中的指定 Lake Formation 表的指定权限。

ON EXTERNAL SCHEMA schema_name

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

FROM IAM_ROLE iam_role

表示丢失权限的 IAM 角色。

ROLE role_name

从指定的角色撤销权限。

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

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

注意

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

ON SCHEMA schema_name

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

RESTRICT

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

EXECUTE ON PROCEDURE procedure_name

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

EXECUTE ON ALL PROCEDURES IN SCHEMA procedure_name

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

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' [ VIA DATA CATALOG ]

指示另一个账户中使用者失去对数据共享的权限的账号。指定‘VIA DATA CATALOG’表示您要从 Lake Formation 账户撤销使用数据共享的权限。省略账号意味着您要撤销拥有集群的账户的权限。

ON DATABASE shared_database_name> [, ...]

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

ON SCHEMA shared_schema

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

FOR { SCHEMAS | TABLES | FUNCTIONS | PROCEDURES | LANGUAGES } IN

指定要撤销权限的数据库对象。IN 后面的参数定义了所撤销权限的范围。

CREATE MODEL

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

ON MODEL model_name

撤销特定模型的 EXECUTE 权限。

ACCESS CATALOG

撤销查看该角色可访问对象的相关元数据的权限。

[ ADMIN OPTION FOR ] { role } [, ...]

您从具有 WITH ADMIN OPTION 的指定用户撤销的角色。

FROM { role } [, ...]

从其撤消了指定角色的角色。

要了解有关 REVOKE 使用说明的更多信息,请参阅使用说明

有关如何使用 REVOKE 的示例,请参阅示例