mysql

Saas用户权限设计

2019-11-24  本文已影响0人  产品扎记

 嗨,很高兴没有因为上一次的玩笑而失去你,所以这篇纯干货分享,希望对你有用。

这是一个被问的最多的问题,不管是在线教育、互联网医疗还是云电商,Saas用户权限设计的本质是一样的,与行业无关。所以无论什么行业的你,请坚持看完呦,说不定哪天就用到了呢。

咨询我的产品锦锂网上找到的资料基本都是这样的:

这样的:

还有这样的:

但看完是否仍一脸蒙逼无从下手呢? 

下面小编就以教务管理系统举个栗子说明:

业务背景

某教育领域的科技公司,想针对不同的学校提供不同的教务管理平台服务。不同的学校访问路径不同,学校里不同的人处理不同的工作,班主任管理对应的班级,学科老师管理对应的学科,年级主任管理对应年级所有事项,学科组长管理所有班级的对应学科……所以不仅要保证每个学校有自己的域名,还要保证学校里每个用户所能看到的数据隔离和操作权限分开。

Saas目前的租用设计策略主要有:

1.完全隔离策略:数据库层和应用层针对每个租户都分配专有资源,即完全独立,也就是我们通常说的单租户模式;

2.数据隔离策略:应用层共享应用服务器、Web服务器等,数据库层仍然是独立专用的。这其实是一种介于多租户和单租户之间混用的方法;

3.数据分离策略:将租户分隔成不同的数据库模式(schema),但它们共享相同的服务器,即租户共享所有的层。

至于选择具体用哪一种策略,不同的策略有不同的优缺点,所以需要根据服务商的实际情况和租户的具体需求来决定。

这里的话,我会比较偏向用第2种策略。

用户授权整体架构

根据上面的业务背景,整体的用户权限框架可以设计成这样:

超级管理员指Saas服务商运营管理人员,主要工作是Saas平台管理和租户运营,有的还要负责Saas环境搭建。权限资源包含数据权限、操作权限,有的时候还会按页面粒度来区分,但都是属于权限资源。

用户授权

考虑到任课老师只能看自己负责的学科数据、各班老师只能看自己负责班级的数据、教务主任只能看自己负责的年级。所以数据权限可以由【班级】来隔离限制,功能权限则由所分配角色来决定。

eg:假设张三是某校八年级教务主任兼教八年2班的化学老师,八年级总共3个班,则用户授权可以是这样的:

也可以是这样的:

这两种授权方式的区别在于第1种是按【授权班级+授权角色】完全隔离权限,即进入不同的班级对应不同的权限。

而第2种则是把【授权班级】、【授权角色】做权限并集,即在平台内对所授权班级对应的所有权限,都是一样的。

角色授权

而对应的角色则可以按需分配对应的权限,比如这样:

So看到这里你找到思路了吗?

如果还是没有,那就算了吧,毕竟我也不想做详细设计。

(不过关注私信留言,还是可以考虑单独进行详细讲解滴。我也想不到我竟然会这么没有原则)

--------------------------------------------------end---------------------------------------------

上一篇下一篇

猜你喜欢

热点阅读