用户和角色概述
一个数据库可能有多个用户访问,为了方便管理这些用户,可将用户管理成一个数据库角色,一个数据库角色可以视为一个数据库用户,或者一组数据库用户。
背景信息
对于MOTService来说,用户和角色是基本相同的概念,不同之处在于,使用CREATE ROLE创建用户,不会创建同名的SCHEMA,并且默认没有LOGIN权限。换句话说,一个拥有LOGIN权限的角色可以被认为是一个用户。在业务设计中,仅建议通过ROLE来组织权限,而不是用来访问数据库。
数据库角色和权限
权限和角色可以控制用户访问指定的数据,以及执行指定类型的SQL语句。详细信息请参见表1。
系统权限只能通过在CREATE/ALTER USER、CREATE/ALTER ROLE语句指定(其中SYSADMIN还可以通过grant/revoke all privileges的方式赋予、回收),无法从角色继承。
分类 |
描述 |
---|---|
系统权限 |
系统权限又称为用户属性,可以在创建用户和修改用户时指定,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN。 系统权限一般通过CREATE/ALTER USER语句指定。除了SYSADMIN外的其他系统权限,无法通过GRANT/REVOKE进行授予和撤销。并且,系统权限无法通过ROLE被继承。 |
对象权限 |
对象权限是指在表、视图、索引和函数等数据库对象上执行各种操作的权限,对象权限包括SELECT、INSERT、UPDATE和DELETE等。 只有对象的所有者或者系统管理员才可以执行GRANT/REVOKE语句来分配/撤销对象权限。 |
角色 |
角色是一组权限的集合,可以将一个角色的权限赋予其他角色和用户。 由于无法给其他角色和用户赋予系统权限,所以角色只有是对象权限的集合时才有意义。 |
创建用户操作步骤
- 登录FusionInsight Manager,选择“集群 > 服务 > MOTService > 实例”,查看并记录“MOTServer(主)”实例的业务IP。
- 以omm用户身份登录MOTService主节点,执行如下命令启动环境变量。
source ${MOTSERVER_HOME}/.motservice_profile
- 以连接默认postgres为例,端口号是20105,输入MOTService数据库omm用户密码:
gsql -d postgres -p 20105
MOTService数据库的omm密码请联系系统管理员获取。
- 规划用户。
从安全性考虑,建议在安装MOTService数据库后,分别规划具备表2所示权限的用户。
表2 用户的规划原则及创建方法 用户类型
说明
创建方法
系统管理员
具有SYSADMIN权限的用户。
规划原则:在安装数据库或者初始化数据库时,会自动生成一个与-U参数指定的用户同名的系统管理员。不建议再创建其他系统管理员。
这三类用户创建方式类似,以创建审计管理员user_audit为例,命令格式如下:
CREATE USER user_audit WITH AUDITADMIN IDENTIFIED BY "user_audit_password";
安全管理员
具有CREATEROLE权限的用户。
规划原则:建议只建立一个仅具有CREATEROLE权限的安全管理员。
审计管理员
具有AUDITADMIN权限的用户。
规划原则:建议只建立一个仅具有AUDITADMIN权限的审计管理员。
对象操作员
最小权限用户,可以连接MOTService默认的数据库postgres,并访问其中默认的系统表和视图的用户。
规划原则:首先创建角色,再将用户加入此角色,则用户具有角色的对象权限。
以创建角色role1具有表“films”的查询权限,再创建用户user_read加入角色role1,拥有相同对象权限为例:
- 创建角色role1。
CREATE ROLE role1 IDENTIFIED BY "role1_password";
- 为角色role1添加对表“films”的查询权限。
GRANT SELECT ON TABLE films TO role1;
- 创建对象操作员user_read并加入角色role1中。
CREATE USER user_read IN ROLE role1 PASSWORD "user_read_password";
- 创建角色role1。