Amazon Redshift
数据库开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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 | 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 ]

以下语法用于 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 } [, ...]

参数

GRANT OPTION FOR

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

SELECT

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

INSERT

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

UPDATE

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

DELETE

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

REFERENCES

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

ALL [ PRIVILEGES ]

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

ALTER

撤销更改为 Lake Formation 启用的 AWS Glue 数据目录 中的表的权限。此权限仅在使用 Lake Formation 时适用。

DROP

撤销删除为 Lake Formation 启用的 AWS Glue 数据目录 中的表的权限。此权限仅在使用 Lake Formation 时适用。

ON [ TABLE ] table_name

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

ON ALL TABLES IN SCHEMA schema_name

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

( 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 使用权限。有关更多信息,请参阅存储过程的安全性和权限

使用说明

要撤消对象的权限,您必须满足下列条件之一:

  • 是对象所有者。

  • 是超级用户。

  • 拥有该对象和权限的授予权限。

    例如,以下命令使用户 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 数据目录 中也有 ALL 权限,则不会撤销 ALL 权限。只撤销 SELECT 权限。您可以在 Lake Formation 控制台中查看 Lake Formation 权限。

示例

以下示例从 GUESTS 用户组撤消对 SALES 表的 INSERT 权限。此命令使 GUESTS 的成员无法通过使用 INSERT 命令将数据加载到 SALES 表中:

revoke insert on table sales from group guests;

以下示例从用户 fred 撤消对 QA_TICKIT schema 中所有表的 SELECT 权限:

revoke select on all tables in schema qa_tickit from fred;

以下示例撤消用户 bobr 从视图中选择的权限:

revoke select on table eventview from bobr;

以下示例从所有用户撤消在 TICKIT 数据库中创建临时表的权限:

revoke temporary on database tickit from public;

本页内容: