权限管理#

Skylab 使用基于角色的权限管理(RBAC,Role-Based Access Control)的设计思路,权限赋予角色,角色赋予用户或者用户组,方便批量权限管理。 在此基础上,为了更加灵活,同时开放了将权限赋予具体用户的赋权方式,适合简单的场景。遵循最佳实践,建议使用角色来组织、管理权限:

  • 将角色赋给用户,用户即拥有这个角色所拥有的权限。

  • 将角色赋给用户组,用户组内所有用户即拥有这个角色所拥有的权限。

所以,给某用户授权有三种方式:直接给用户授权、把有相应权限的角色赋予给该用户、把该用户加入某具有权限(被赋予某角色)的用户组。

限制与约束#

如下图所示,OushuDB 的系统权限不能通过角色继承,数据对象的权限是可以继承的,详见 OushuDB 用户手册。

例如某用户 A 被赋予了某角色 A,角色 A 具有 OushuDB 中“创建数据库”的权限,该权限无法继承到用户 A,如果需要用户 A 具备“创建数据库”的权限,需要单独给用户 A 赋予该权限。

为用户/角色赋权#

您可以为用户或者角色赋权,需要在不同的功能中操作。为用户授权需要从“个人中心”的“用户管理”页面的“用户”标签进入,选中某子用户,点击“权限”。 给角色授权需要从“个人中心”的“用户管理”页面的“角色”标签进入,选中某角色,点击“权限”,即可打开如图所示权限管理窗口。
最佳实践:角色是权限的集合,规划您的角色,为角色授权,然后将角色赋予用户、用户组。

最左侧,是权限的分类,产品为第一级分类,产品下面还可以分二级分类,例如 OushuDB 可以分为数据、计算集群(实例)、工作簿三种权限。 在右侧最上部分可以选择具体的 OushuDB 集群(有的分类/子分类并没有集群,如工作簿)来进行权限管理。 再往下是系统权限,右下主要内容是对象的权限管理。在对象权限管理部分,左侧是对象的列表,右侧是具体的操作权限的选择。 选择或者反选您需要调整的权限,点击“提交“即可保存调整后的权限。

将角色赋予用户#

在角色管理页面,选中某一个角色,点击“关联用户”,在弹出窗口中选择您想要赋予的用户,点击“提交”即可。

将角色赋予用户组#

在角色管理页面,选中某一个角色,点击“关联到组”,在弹出窗口中选择您想要赋予的用户组,点击“提交”即可。赋予角色到用户组之后,角色所拥有的权限会继承到用户组中所有的用户。

管理用户组内用户#

添加用户到用户组,可以达到继承用户组上所有角色的目的,通过这种操作,可以达到批量管理权限的目的。 在用户组管理页面,选中某一个用户组,点击“关联用户”,在弹出窗口中选择您想要关联到该用户组的用户,点击“提交”即可。

关于 OushuDB 的存、算分离的授权#

OushuDB 是存、算分离的架构,存储与计算的权限可以独立管理。如图所示,OushuDB 产品下“数据“分类指的是“存”的权限,在此可以管理角色/用户对库、Schema、表的权限。 注意:从 Skylab 5.4.0.0 以及 OushuDB 5.3.0.0 开始支持权限的级联授权,如果选择了某 Schema 下的“所有表“的相关权限,不但可以把 Schema 下当前存在的表的权限授予给用户/角色,该用户/角色也会拥有 Schema 下将来新加入的表的相应权限。 “计算集群”分类,是指“算”的权限,在此您可以管理该角色/用户对哪些计算集群有权限,可以按照角色/用户划分计算资源。 “工作簿”分类,是指对工作簿的权限。 “表空间”分类,是指对数据库表空间的权限,只有为角色/用户授予了表空间的权限后,该角色/用户才可以在对应的表空间上创建数据库对象。