Hubble数据库的用户权限支持两种配置策略,一种是使用配置文件在后台进行用户和权限的配置,另一种是在Hubble数据库管理系统上使用基于RBAC的角色权限控制。
用户权限
Hubble用户密码采用htpasswd用于创建、更新储存用户名和密码文件。
进入conf/目录下执行
htpasswd -B -C 10 hubble_password user2
[hubble@hubble01 conf]$ htpasswd -B -C 10 hubble_password user2
New password:
Re-type new password:
Adding password for user user2
[hubble@hubble01 conf]$ cat hubble_password
hubble:$2y$10$MTQ6cSV.yw83/0G1XyTRHOWTB7Fw9EbTb3oeIlMqb2RKNJ.X9a9q6
zhaol:$2y$10$vg26N3hypG9S2Qmq.n6TK.gLb8LGeIZT2QZAht5BhosaxoAXUvJpq
user2:$2y$10$YpVD3wiuUZXxJVX8PqHJ9ehn.J1l4/0bz9o50Me33t9bUpLV0cSZ6
[hubble@hubble01 conf]$
注意:
修改密码执行上面语句,则可以直接更新密码
删除用户,执行删除hubble_password中对应的的记录
授权统一使用conf/hubble_access.json进行权限管控,默认管控权限由hubble账户来执行。
{
"schemas": [
{
"user": "hubble",
"catalog":".*",
"schema": ".*",
"owner": true
},
{
"user": "zhaol",
"catalog":"(hubble|system)",
"schema": "zl",
"owner": true
},
{
"user": "(user1|user2|user3)",
"catalog":"(hubble|system)",
"schema": "zl2",
"owner": true
}
],
"tables": [
{
"user": "hubble",
"catalog":".*",
"schema": ".*",
"table": ".*",
"privileges": ["SELECT","INSERT"," DELETE", "UPDATE", "OWNERSHIP","GRANT_SELECT"]
},
{
"user": "(user1|user2|user3)",
"catalog":"hubble",
"schema": "zl2",
"table": ".*",
"privileges": ["SELECT", "INSERT", "DELETE","UPDATE", "OWNERSHIP","GRANT_SELECT"]
},
{
"user": "zhaol",
"catalog":"hubble",
"schema": "(zl|zl3)",
"table": ".*",
"privileges": ["SELECT","INSERT"," DELETE", "UPDATE", "OWNERSHIP","GRANT_SELECT"]
},
{
"user": "(zhaol|user1|user2|user3)",
"catalog":"system",
"schema": ".*",
"table": ".*",
"privileges": ["SELECT"]
}
]
}
授权参考user 中的配置 user1 或者zhaol
Hubble 支持基于RBAC的角色权限控制。
使用管理员用户可以在平台上创建用户和角色,为角色分配库表权限。
创建用户时,密码需要符合规则,如包含大小写字母和数字等。
管理员可以在用户详情页面为用户修改密码,也可以在用户列表重置密码,解除锁定状态。
普通用户在登录后,可以在个人中心
修改自己的密码。
个人中心,这里可以查看当前用户的所属角色和所属组。
注意,用户的密码是有时效性的,有效期内可以正常登录,过了有效期则会被锁定。在个人中心可以查看当前密码的有效期,当临近有效期时,还会有临期提醒。用户可以在这里更新自己的密码。
管理员可以创建角色,输入角色名称和描述,即可添加角色到系统中。
使用hubble的角色权限访问控制功能,需要在hubble的配置文件中,配置属性
hubble.access-control.enabled
为true
。
为角色分配用户
为角色分配一个用户:
可以在下拉列表中选择一个已有用户,也可输入一个用户名。当用户名不存在时会默认创建一个新用户。
在角色详情页面可以为角色添加权限。
可以为角色分配目录 catalog
、数据库 schema
、表 table
和字段 column
级别的不同权限,可分配权限包括:
修改 Alter
| 创建 Create
| 删除 Delete
| 销毁 Drop
| 插入 Insert
| 刷新 Refresh
| 查询 Select
| 显示 Show
| 更新 Update
等。
详细的使用说明请参考
《Hubble 数据库管理系统操作手册》
{
"rootGroups": [
{
"name": "hubble_g",
"softMemoryLimit": "80%",
"maxQueued": 100,
"hardConcurrencyLimit": 20,
"schedulingPolicy": "query_priority",
"jmxExport": true
},
{
"name": "zhaol_g",
"softMemoryLimit": "30%",
"maxQueued": 5,
"hardConcurrencyLimit": 2,
"schedulingPolicy": "query_priority",
"jmxExport": true
},
{
"name": "zzfx",
"softMemoryLimit": "30%",
"maxQueued": 1000,
"hardConcurrencyLimit": 50,
"schedulingPolicy": "query_priority",
"jmxExport": true
},
{
"name": "any",
"softMemoryLimit": "20%",
"maxQueued": 1000,
"hardConcurrencyLimit": 50,
"schedulingPolicy": "query_priority",
"jmxExport": true
}
],
"selectors": [
{
"user": "hubble",
"group": "hubble_g"
},
{
"user": "zhaol",
"group": "zhaol_g"
},
{
"user": "user1",
"group": "zzfx"
},
{
"group": "any"
}
]
}
rootGroups 为资源控制 ,资源池可用的内存多少,以及任务并行度和队列
"name": "hubble_g", --资源组名 "softMemoryLimit": "20%", --资源组可使用的最大分配内存 "maxQueued": 100, --最大队列数 "hardConcurrencyLimit": 20, --最多任务并行数 "schedulingPolicy": "query_priority", --优先级 保持默认 "jmxExport": true
selectors 为选择器规则 指定用户可以访问什么资源
{ "user": "hubble", --用户 "group": "hubble_g" --资源组名 }
{ "group": "any" }
该选择器,用于未指定的用户使用