前言
GBase 8a的权限管理是一个复杂而关键的过程,它确保了不同用户只能访问和操作他们被授权的数据库对象和功能。权限管理在数据库安全中起着至关重要的作用,它可以帮助管理员规划好不同数据库用户的职责,并给其赋予相应的操作权限,以保证数据库的安全操作。
在GBase 8a中,权限管理涉及到多个方面和层次。首先,它提供了多种类型的权限级别,包括全局级、vc级、数据库级、列级、表级等。这些权限级别允许管理员根据用户的职责和需求,精确地控制用户对数据库的访问和操作范围。
一、grant和revoke语法介绍
GRANT priv_type1,priv_type2... ON priv_level to username/rolename;
REVOKE priv_type1,priv_type2...ON priv_level from username/rolename;
priv_type:权限类型
priv_level:权限级别
二、权限类型和级别
1、权限级别:gbase8a支持全局级,vc级,库级,表级,列级;
数据库权限分为:数据库操作类权限、数据操作类权限、存储过程和自定义函数执行权限、数据查看类权限、数据库管理类权限(包括了用户管理)。
2、权限类型:gbase8a支持的权限类型如下表所示:
权限 | 意义 |
ALL | 设置除GRANT OPTION之外的所有简单的权限 |
select | 允许查看表数据 |
insert | 允许插入表数据 |
update | 允许修改表数据 |
delete | 允许修改表行数据 |
create | 允许创建库表 |
drop | 允许删除库/表/视图,包括truncate |
alter | 允许修改表结构(create,drop) |
index | 允许创建和删除索引 |
reload | 允许执行flush |
Create temporary tables | 允许创建临时表 |
Lock tables | 允许对拥有select权限的表锁定 |
Grant option | 管理权限的权限 |
process | 允许查看实例进程信息 |
super | 允许进行一系列的数据库管理的命令,包括kill和set 命令 |
Show databases | 显示数据库 |
Create view | 创建视图 |
Show view | 允许查看创建的视图 |
unmask | 允许不受数据脱敏限制 |
Create routine | 允许创建存储过程/函数 |
Alter routine | 允许修改或删除存储过程/函数 |
execute | 允执行存储过程/函数 |
Create user | 创建/修改/删除/重命名user和role |
event | 查看/创建/修改/删除事件 |
trigger | 查看/创建/修改/删除触发事件 |
FiLE | 允许使用导出和加载数据 |
Shutdown | 允许使用gbaseadmin shutdown |
usage | 用于连接登录数据库 |
三、给用户授予权限
前提:数据库的各个用户和操作对象存在
各个级别及多种权限授予用户示例:
grant all on *.*.* to user user1;
grant create,select,insert,alter on *.*.* to user2; #全局级
grant create,select,execute,create routine on vc1.*.* to user3; #集群带vc
grant create,select,delete,insert,drop on test.* to user4; #库级
grant create,select,create view,show view,insert,drop on vc1.test.t1 to user5; #表级
grant select,update(a),insert(i) on vc1.test.t1 to user6; #列级
四、回收用户权限
回收用户权限示例:
revoke all on *.*.* from user user1;
revoke create,select,insert,alter on *.*.* from user2; #全局级
revoke create,select,execute,create routine on vc1.*.* from user3; #vc级
revoke create,select,delete,insert,drop on test.* from user4; #库级
revoke create,select,create view,show view,insert,drop on vc1.test.t1 from user5; #表级
revoke select,update(a),insert(i) on vc1.test.t1 from user6;#列级
五、给用户组授予权限
用户组:设置用户归属的用户组,用户组的权限会影响到该用户组的权限鉴定。即用户拥有用户组被授予的权限。
前提:创建用户组,设置用户归属的用户组,sql执行如下:
create role role1;
grant user1 to role1;
grant role1 to user1;
grant select on *.*.* to role1;
show grants for user1;
部分运行代码展示:
六、回收用户组权限
回收用户组权限示例:
revoke select on *.*.* from role1;