用户权限

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

基于RBAC的用户权限

Hubble 支持基于RBAC的角色权限控制。

使用管理员用户可以在平台上创建用户和角色,为角色分配库表权限。

创建用户

user_create.png
user_create.png

创建用户时,密码需要符合规则,如包含大小写字母和数字等。

管理员可以在用户详情页面为用户修改密码,也可以在用户列表重置密码,解除锁定状态。

普通用户在登录后,可以在个人中心修改自己的密码。

user_set
user_set

个人中心,这里可以查看当前用户的所属角色和所属组。

注意,用户的密码是有时效性的,有效期内可以正常登录,过了有效期则会被锁定。在个人中心可以查看当前密码的有效期,当临近有效期时,还会有临期提醒。用户可以在这里更新自己的密码。

创建角色

管理员可以创建角色,输入角色名称和描述,即可添加角色到系统中。

role_create.png
role_create.png

使用hubble的角色权限访问控制功能,需要在hubble的配置文件中,配置属性 hubble.access-control.enabledtrue

为角色分配用户

为角色分配一个用户:

role_add_user.png
role_add_user.png

可以在下拉列表中选择一个已有用户,也可输入一个用户名。当用户名不存在时会默认创建一个新用户。

角色赋权

在角色详情页面可以为角色添加权限。

role_grant_table.png
role_grant_table.png

可以为角色分配目录 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" }

该选择器,用于未指定的用户使用