GRANT授权和REVOKE撤销授权
授权
GaussDB(DWS)通过GRANT语法对角色和用户进行授权操作,普通用户如果要访问某张表,如果没有系统管理员dbadmin或者表的owner进行GRANT授权,是无法访问的,此默认机制有效地控制用户对数据的访问,防止数据泄露。
使用GRANT命令进行用户授权包括以下三种场景:
- 将系统权限授权给角色或用户
系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN。
系统权限一般通过CREATE/ALTER ROLE语法来指定。其中,SYSADMIN权限可以通过GRANT/REVOKE ALL PRIVILEGE授予或撤销。但系统权限无法通过ROLE和USER的权限被继承,也无法授予PUBLIC。
- 将数据库对象授权给角色或用户
将数据库对象(表和视图、指定字段、数据库、函数、模式等)的相关权限授予特定角色或用户;
GRANT命令将数据库对象的特定权限授予一个或多个角色。这些权限会追加到已有的权限上。
GaussDB(DWS)会将某些类型的对象上的权限授予PUBLIC。默认情况下,对表、表字段、序列、外部数据源、外部服务器、模式或表空间对象的权限不会授予PUBLIC,而以下这些对象的权限会授予PUBLIC:数据库的CONNECT权限和CREATE TEMP TABLE权限、函数的EXECUTE特权、语言和数据类型(包括域)的USAGE特权。当然,对象拥有者可以撤销默认授予PUBLIC的权限并专门授予权限给其他用户。为了更安全,建议在同一个事务中创建对象并设置权限,这样其他用户就没有时间窗口使用该对象。另外,这些初始的默认权限可以使用ALTER DEFAULT PRIVILEGES命令修改。
- 将角色或用户的权限授权给其他角色或用户
将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下,每个角色或用户都可视为拥有一个或多个数据库权限的集合。
当声明了WITH ADMIN OPTION,被授权的用户可以将该权限再次授予其他角色或用户,以及撤销所有由该角色或用户继承到的权限。当授权的角色或用户发生变更或被撤销时,所有继承该角色或用户权限的用户拥有的权限都会随之发生变更。
数据库系统管理员可以给任何角色或用户授予/撤销任何权限。拥有CREATEROLE权限的角色可以赋予或者撤销任何非系统管理员角色的权限。
了解更多请参见GRANT。