南大通用GBase8s 常用SQL语句(191)

取消 WITH GRANT OPTION 授予的权限

如果您从 user 取消您使用 WITH GRANT OPTION 关键字授予的权限或角色,则切断由那个 user 授予的权限的链条。

这样,当您从用户或从角色取消权限时,您还取消了在下列上下文中 GRANT 语句所产生的相同的权限:

  1. 由您的被授予者发出的
  2. 允许,因为您的被授予者指定了 WITH GRANT OPTION 子句
  3. 允许,因为后续的被授予者使用 WITH GRANT OPTION 子句授予了相同的权限或角色

在给特定的用户指定权限的 GRANT 语句中,仅 WITH GRANT OPTION 子句是有效的。被授予者不可为 PUBLIC 组或角色。

下列示例展示权限的取消。假设您,作为表 items 的所有者,发出下列语句来将访问权限授予用户 mary

REVOKE ALL ON items FROM PUBLIC;

GRANT SELECT, UPDATE ON items TO mary WITH GRANT OPTION;

然后,用户 mary 使用她的新权限来授予用户 cathy 和 paul 对 items 表的访问:

GRANT SELECT, UPDATE ON items TO cathy;

        GRANT SELECT ON items TO paul;

稍后,您从用户 mary 取消对 items 表的权限:

REVOKE SELECT, UPDATE ON items FROM mary;

此单一语句有效地从用户 marycathy 和 paul取消对 items 表的所有权限。

CASCADE 关键字与此缺省的情况有相同的作用。

AS 子句

若没有 AS 子句,执行 REVOKE 语句的用户必须为正被取消的权限的授予者。DBA 或该对象的所有者可使用 AS 子句来指定另一用户(必须为该权限的授予者)作为该权限的取消者。

AS 子句提供唯一的机制,可取消对其 owner 为诸如 gbasedbt 这样的授权标识符的数据库对象的权限,该标识符还不是操作系统已知的有效的用户账户。

要了解 AS revoker 子句需要的,而不是可选的,上下文,请参阅 将 Execute 权限从 PUBLIC 取消。

CASCADE 关键字对 UNDER 权限的作用

如果您以 CASCADE 选项取消对类型表的 Under 权限,则从指定的用户移除 Under 权限,并从数据库删除那个用户在该类型表之下创建的任何子表。

如果当那个数据类型正在使用时,您以 CASCADE 选项取消对命名的 ROW 类型的 Under 权限,则 REVOKE 失败。对 CASCADE 选项的缺省的行为会发生例外,因为数据库服务器支持仅带有 RESTRICT 关键字的 DROP ROW TYPE 语句。

例如,假设用户 jeff 创建名为 rtype1 的 ROW 类型,并将对那个 ROW 类型的 Under 权限授予用户 mary。现在,用户 mary 在 ROW 类型 rtype1 之下创建名为 rtype2 的 ROW 类型,并将对 ROW 类型 rtype2 的 Under 权限授予用户 andy。然后,用户 andy 在 ROW 类型 rtype2 之下创建名为 rtype3 的 ROW 类型。

如果现在用户 jeff 试图以 CASCADE 选项从用户 mary 取消对ROW 类型 rtype1 的 Under 权限,则 REVOKE 语句失败,因为 ROW 类型 rtype2 仍在被 ROW 类型 rtype3 所使用。

以 RESTRICT 选项控制 REVOKE 的作用域

当任何下列依赖存在时,RESTRICT 关键字导致 REVOKE 语句失败:

  1. 视图依赖于您正在尝试取消的 Select 权限。
  2. 外键约束依赖于您尝试取消的 References 权限。
  3. 您尝试从一用户取消权限,该用户后来将此权限授予了另一用户或角色。

如果 REVOKE 指定有将该权限授予其他用户的权限,但尚未使用那项权利的用户,则 REVOKE 不会失败。例如,假设当用户 clara 将对 customer 表的 Select 权限授予用户 ted 时,它指定 WITH GRANT OPTION。进一步假设用户 ted,接着将对 customer 表的 Select 权限授予用户 taniaclara 发出了的下列语句不起作用,因为 ted 已使用了它的授权来授予 Select 权限:

REVOKE SELECT ON customer FROM ted RESTRICT;

相反,如果用户 ted 未将 Select 权限授予 tania 或任何其他用户,则同样的 REVOKE 语句成功。 即使 ted 确将 Select 权限授予另一用户,下列语句的每一条均成功:

REVOKE SELECT ON customer FROM ted CASCADE;

REVOKE SELECT ON customer FROM ted;

安全管理选项

结合 GRANT 语句,REVOKE 语句通过指定哪些用户或角色持有需要访问数据库或数据库之内的对象的权限,支持 GBase 8s 的自主访问控制(DAC)数据安全特性。

REVOKE 语句的“安全管理选项”,与 GRANT 语句的对应选项相似,支持一系列附加的数据安全特性,称为基于标签的访问控制(LBAC)。 这些特性使得 GBase 8s 能基于将包含在数据对象中的行安全标签或列安全标签与用户标签及其他已经授予了正在寻求访问的用户的其他凭证进行比较,允许或拒绝对受保护的数据的访问。

安全管理选项

 

使用这些 REVOKE 语句安全管理选项是受限的:

  1. 仅“数据库服务器管理员”(DBSA),缺省为用户 gbasedbt,可使用 REVOKE DBSECADM 语句来取消 DBSECADM 角色。
  2. 仅持有 DBSECADM 角色的用户可发出 REVOKE EXEMPTION、REVOKE SECURITY LABEL 或 REVOKE SETSESSIONAUTH 语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值