vastbase 用户、角色、权限管理
1、角色
vastbase数据库使用角色的概念管理数据库访问权限。
根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。
角色可以拥有数据库对象(比如表)以及可以把这些对象上的权限赋予其它角色, 以控制谁拥有访问哪些对象的权限。
操作角色的语句:
2、角色的权限
一个数据库角色可以有很多权限,这些权限定义了角色和拥有角色的用户可以做的事情。
比如:创建一个用户db_user1,并赋予它角色
vastbase=#
vastbase=#
vastbase=# create user db_user1 password 'Test@123456';
CREATE ROLE
vastbase=# du
List of roles
Role name | Attributes | Member of
----------------------+----------------------------------------------------------------------------------------+-----------
db_user1 | | {}
可以看出新创建的用户没有角色权限。接下来我们创建一个角色db_user2,看看角色本身都有哪些权限。
vastbase=# create role db_user2 password 'tEst@123456';
CREATE ROLE
vastbase=#
vastbase=# du
List of roles
Role name | Attributes | Member of
----------------------+----------------------------------------------------------------------------------------+-----------
db_user1 | | {}
db_user2 | Cannot login | {}
| {}
可以看出角色在创建成功后是没有登录权限的。因此在创建角色后要给一个基本的登录权限login
vastbase=# alter user db_user2 login;
3、给用户db_user1授权createdb、createrole角色
vastbase=# alter user db_user1 createdb createrole;
ALTER ROLE
vastbase=# du
List of roles
Role name | Attributes | Member of
----------------------+----------------------------------------------------------------------------------------+-----------
db_user1 | Create role, Create DB | {}
db_user2 | | {}
4、给角色db_user2授权Replication、Sysadmin角色
vastbase=# alter user db_user2 Replication Sysadmin;
ALTER ROLE
vastbase=# du
List of roles
Role name | Attributes | Member of
----------------------+----------------------------------------------------------------------------------------+-----------
db_user1 | Create role, Create DB | {}
db_user2 | Replication, Sysadmin | {}
5、回收角色db_user2
vastbase=# alter user db_user2 nosysadmin noreplication;
ALTER ROLE
vastbase=#
vastbase=# du
List of roles
Role name | Attributes | Member of
----------------------+----------------------------------------------------------------------------------------+-----------
db_user1 | Create role, Create DB | {}
db_user2 | | {}
6、删除用户角色
vastbase=# drop user db_user1;
DROP ROLE
vastbase=# drop role db_user2;
DROP ROLE
因此可以简单认为用户和角色都是角色,只是用户是具有登录权限的角色。
7、赋予角色控制权限
首先新建用户db_user1,db_user2。我们可以使用GRANT 和REVOKE命令赋予用户角色,来控制权限。
vastbase=# create user db_user1 identified by 'Aa@123456';
CREATE ROLE
vastbase=#
vastbase=# create user db_user2 identified by 'aA@123456';
CREATE ROLE
vastbase=#
vastbase=# du
List of roles
Role name | Attributes | Member of
----------------------+----------------------------------------------------------------------------------------+-----------
db_user1 | | {}
db_user2 | | {} | {}
--创建一个角色db_role1并给他createdb createrole角色 ^
vastbase=# create role db_role1 password 'Test@123456' createdb createrole;
CREATE ROLE
vastbase=#
vastbase=# du
List of roles
Role name | Attributes | Member of
----------------------+----------------------------------------------------------------------------------------+-----------
db_role1 | Create role, Create DB, Cannot login | {}
db_user1 | | {}
db_user2 | | {} | {}
--给用户1,2赋予角色1,两个用户就拥有了创建数据库和创建角色的权限
vastbase=# grant db_role1 to db_user1,db_user2;
GRANT ROLE
vastbase=# du
List of roles
Role name | Attributes | Member of
----------------------+----------------------------------------------------------------------------------------+------------
db_role1 | Create role, Create DB, Cannot login | {}
db_user1 | | {db_role1}
db_user2 | | {db_role1} | {}
可以看到用户已经有了db_role1的角色权限。
--从用户1移除角色1,用户不在拥有角色1的权限
vastbase=# revoke db_role1 from db_user1;
REVOKE ROLE
vastbase=# du
List of roles
Role name | Attributes | Member of
----------------------+----------------------------------------------------------------------------------------+------------
db_role1 | Create role, Create DB, Cannot login | {}
db_user1 | | {}
db_user2