GBase 8s 提供的自主访问控制(Discretionary Access Control, DAC)功能非常灵活,用户可对不同的数据对象设定不同的访问权限,同时,不同的用户对同一数据对象也有不同的权限。用户可以将其拥有的访问权限转授给其他用户。自主访问控制是基于用户的,由数据对象的拥有者决定哪些用户可以对该数据对象进行访问,访问权限完全由数据对象的拥有者决定。
用户对数据对象的操作权利被称为权限,用户权限是由数据库对象(库、表、字段等)和操作类型(DDL、DML 等)两个要素组成,对用户权限的定义就是定义该用户可以对哪些数据库对象进行哪些类型的操作。
该功能不受配置参数控制。
基本语法
GBase 8s 的权限赋予语法如下:
TO Options 子句语法如下:
收回权限的语法如下:
FROM Options 子句语法如下:
说明如下:
1) GBase 8s 赋权和收回权限关键字;
2) 数据库级别权限授权和收回;
3) 角色及默认角色授予和收回;
4) 基于标签的访问控制(LBAC)相关设置;
5) 表级(字段级)权限授权的授予和收回;
6) SPL(存储过程、函数、触发器)授权和收回;
7) 自定义数据类型授权的授权和收回;
8) 序列(Sequence)的授权和收回。
权限划分
在 GBase 8s 中,可以对数据库、表、字段、视图、SPL(存储过程、函数、触发器)、分片等数据库对象进行权限的授予和收回操作,如下图所示:
其中,数据库的权限是其他权限的基础,用户只有拥有数据库的权限后才能访问表、视图、存储过程等其他数据库资源。
数据库以及其中的每个表、视图、存储过程和自定义数据类型都具有所有者。对象的所有者通常是创建该对象的人员。数据库对象的所有者默认对该对象具有所有权限。
数据库不同元素的权限如下表所示:
对象 | 权限 |
---|---|
Database | Connect, resource, DBA |
Table | Select, update, insert, delete, index, alter, references |
Column | Select, update, references |
Fragment | Insert, update, delete |
View | Select, insert, delete, update |
Sequence | Select, alter |
UDT | Usage, under |
SPL | Execute |
数据库级别权限
对于所有有权使用指定数据库的用户都必须赋予其数据库级别的用户权限。在GBase 8s 中,数据库级别的用户权限有三种,按权限从低到高排列依次为:CONNECT、RESOURCE、DBA。
1. CONNECT
这是级别最低的一种数据库级别用户权限。拥有该权限的用户可以执行SELECT、INSERT、UPDATE 和 DELETE 语句,针对数据表执行存储过程,创建数据表的视图,创建临时表。
具有 connect 特权的任何用户都可以执行以下的功能:
• 使用语句连接数据库
• 执行 Select, Insert, Update, Delete 语句(如果用户有必要的表级别权限)
• 创建视图,如果用户对基本表有 select 权限
• 创建同义词
• 创建临时表以及创建临时表的索引
• 改变或删除表或索引,如果用户拥有表或者索引
• 对表或者视图授予特权,如果用户拥有表
2. RESOURCE
拥有该权限的用户除拥有 CONNECT 的全部权限外,还可以创建新表,并可以对自己创建的表执行 ALTER 和 DROP 操作,并执行创建索引,执行自定义函数(UDR)等操作。
除了具有 connect 特权的功能,Resource 特权的持有者可执行以下的功能:
• 创建新表
• 创建新索引
• 创建新 UDR
• 创建新数据类型
3. DBA
数据库的建立者和拥有者被自动受于这种权限。拥有该权限的用户除拥有CONNECT、RESOURCE 的全部权限外,还可以对其他用户授予或解除 CONNECT、RESOURCE 和 DBA 权限,可以对其他用户创建的表和视图执行 DROP 和 ALTER 操作。也可以对数据库执行 DROP、START、STOP 和 RECOVER 操作。
拥有 Resource 特权的所有能力,并且能执行以下的附加操作:
• 将任何数据库特权(包括 DBA 特权)授予其他用户
• 将任何表级别特权授予其他用户和角色
• 创建表,视图和索引,指定其他用户作为这些对象的所有者
• 改变,删除或者重命名数据库对象,不管谁拥有它们
• 插入,删除或更新除 systables 之外的任何系统目录表的行
数据库级别权限表
权限 | Connect | Resource | DBA |
---|---|---|---|
Select, insert, update, delete, use temporary tables, and use views. | yes | yes | yes |
Create, alter, drop, and index own tables. | no | yes | yes |
Grant, revoke, drop other owned tables, and start and stop server. | no | no | yes |