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