权限管理#

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

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

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

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

限制与约束#

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

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

支持层级多租户之后,租户的子租户、租户用户、租户内的角色等可以被赋予的权限只能是其父租户权限的子集。

租户权限管理#

引入层级租户之后,除了给租户用户、租户的角色赋权之外,您还可以给租户赋权。父租户管理员登录之后,在用户管理页面,鼠标悬浮到某子租户上,点击“权限管理”图标(钥匙的图标)即可打开子租户权限管理页面。 该页面与用户、角色的权限管理页面相同,在此您可管理机器、集群、数据库的数据、数据库的计算资源(VC)与其他产品的权限。

为用户/角色赋权#

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

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

将角色赋予用户#

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

将角色赋予用户组#

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

管理用户组内用户#

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

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

OushuDB 是存、算分离的架构,存储与计算的权限可以独立管理。如图所示,OushuDB 产品下“数据“分类指的是“存”的权限,在此可以管理角色/用户对库、Schema、表的权限。

注意:给表授权的时候,会给表的权限相关元数据加锁,如果同时有另外一个事务在修改同一个表的相关权限,则会授权失败,可以稍后再试。

“计算集群”分类,是指“算”的权限,在此您可以管理该角色/用户对哪些计算集群有权限,可以按照角色/用户划分计算资源。

“工作簿”分类,是指对工作簿的权限。

“表空间”分类,是指对数据库表空间的权限,只有为角色/用户授予了表空间的权限后,该角色/用户才可以在对应的表空间上创建数据库对象。

关于OushuDB 默认权限#

OushuDB 从 6.0.0.0 开始支持默认权限(即级联权限),Skylab 也做了可视化支持,在数据权限管理页面,点击 OushuDB 的“数据”权限管理页面,点击某数据库的“默认权限管理”图标,可打开默认权限管理页面。

在默认权限管理页面,可以查看、增加、删除、修改默认权限规则。

点击“新建默认权限规则”即可打开新建默认权限规则页面。各参数描述如下:

数据库模式:指规则所生效的模式,如果没有指定,则改规则对所有模式生效。

对象所属用户:指将来该用户所创建的对象的权限默认(自动)赋予给“授权对象”,如果不指定,对象所属用户为当前登录数据库的用户,即当前登录平台的用户。

对象类型:该规则定义的是那种类型的数据库对象,可从表、序列、函数中选择其一。

授权规则:可同时创建多个权限规则,每一个规则只可对应一个授权对象。

授权规则-授权对象:默认权限赋予的目标用户/角色。

授权规则-操作:默认权限规则所涉及的操作类型,不同的对象类型所对应的操作不同。

授权规则-是否允许赋权:授权目标对象因默认权限规则获取具体的数据库对象权限之后,是否可把该权限赋予给其他用户/角色。