jxq
作者jxq2018-01-31 10:46
其它, gbase

GBase 8t 安全特性之自主访问控制(三)控制数据访问的 SQL 语句

字数 1219阅读 1590评论 2赞 3

(一)概述
(二)数据库权限

(三)控制数据访问的 SQL 语句

GBase 8t 提供 GRANT 和 REVOKE 语句,分别用于授予和撤销用户的权限。GRANT 和 REVOKE 语句还用于将角色和诸如 SETSESSIONAUTH 这样的安全管理选项授予用户。

当将权限授予 PUBLIC 时,意味着系统中的所有用户都获得了这个权限。类似地,当从 PUBLIC 撤销权限时,从系统中所有用户剥夺授予给 PUBLIC 的权限。不过,依旧保留单独授予他们的权限,或通过角色授予他们的权限。仅权限的授予者或数据库管理员可以撤销权限。

GRANT 语句的 WITH GRANT OPTION 子句用于指示权限的被授予者可转而将该权限授予其他用户。WITH GRANT OPTION 子句不适用于数据库级权限,但适用于针对所有其他 SQL 对象的权限。

GRANT 语句的 AS grantor 子句允许拥有 DBA 权限的用户作为由 grantor 指示的另一用户将权限授予用户。这意味着,现在只有该 grantor 可以撤销这些权限,也就是说,grantor 成了该权限的授予者。使用 AS grantor 子句的另一场景是,当对象的所有者是操作系统不承认的用户时。在此场景下,拥有 DBA 权限的用户不可将对此对象的权限授予用户。

不可撤销自己的权限。如果要撤销以 GRANT 语句的 AS grantor 子句授予的权限,则必须拥有 DBA 权限,且必须使用 REVOKE 语句的 AS revoker 子句,在此,revoker 必须与 GRANT 语句中的 grantor 相同。

对于其他对象对其有依赖的那些对象,比如,表和超类型,适用于以 REVOKE 语句的 CASCADE 或 RESTRICT 子句来撤销权限。例如,仅拥有对基础表的 SELECT 权限的用户创建视图。如果在创建视图之后,撤销对该表的 SELECT 权限,则视图被删除。这等同于使用 REVOKE 语句的 CASCADE 子句。而如果在撤销表的 SELECT 权限时,使用 REVOKE 语句的 RESTRICT 子句,则撤销语句返回一个错误。

如果撤销用户对超类型的 UNDER 权限,则删除由该用户创建的所有子类型。这等同于使用 REVOKE 语句的 CASCADE 子句。而如果使用 REVOKE 语句的 RESTRICT 子句,则撤销语句返回一个错误。

导致 REVOKE 语句的 CASCADE 子句失败的其他依赖性还有:

  • 依赖于要撤销的 REFERENCES 权限的外键约束
  • 要从用户撤销权限,而该用户后来将此权限授予了另一用户或角色

前面多次提到“对象的所有者”,汇总说明如下:

  • 每个 SQL 对象都有一个所有者。
  • 对象的所有者通常是创建它的那个用户。
  • 只有数据库管理员可以创建由其他用户所有的对象。
  • 对象的所有者拥有对该对象的所有权限,无需额外的权限,即可修改或删除它。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论2 条评论

wuwenpinwuwenpin软件开发工程师, 南京
2018-01-31 17:37
好资料,谢谢分享
DB-TrendSetterDB-TrendSetter数据库架构师, 公司
2018-01-31 14:20
GBase目前市场如何?

jxq@DB-TrendSetter GBase 目前市场很好,在一些行业已经开始替代国外数据库产品。 希望 GBase 能为数据库国产化目标做出更大的贡献。

2018-02-01 14:52
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广