Saas用户权限设计
嗨,很高兴没有因为上一次的玩笑而失去你,所以这篇纯干货分享,希望对你有用。
这是一个被问的最多的问题,不管是在线教育、互联网医疗还是云电商,Saas用户权限设计的本质是一样的,与行业无关。所以无论什么行业的你,请坚持看完呦,说不定哪天就用到了呢。
咨询我的产品锦锂网上找到的资料基本都是这样的:
这样的:
还有这样的:
但看完是否仍一脸蒙逼无从下手呢?
下面小编就以教务管理系统举个栗子说明:
业务背景
某教育领域的科技公司,想针对不同的学校提供不同的教务管理平台服务。不同的学校访问路径不同,学校里不同的人处理不同的工作,班主任管理对应的班级,学科老师管理对应的学科,年级主任管理对应年级所有事项,学科组长管理所有班级的对应学科……所以不仅要保证每个学校有自己的域名,还要保证学校里每个用户所能看到的数据隔离和操作权限分开。
Saas目前的租用设计策略主要有:
1.完全隔离策略:数据库层和应用层针对每个租户都分配专有资源,即完全独立,也就是我们通常说的单租户模式;
2.数据隔离策略:应用层共享应用服务器、Web服务器等,数据库层仍然是独立专用的。这其实是一种介于多租户和单租户之间混用的方法;
3.数据分离策略:将租户分隔成不同的数据库模式(schema),但它们共享相同的服务器,即租户共享所有的层。
至于选择具体用哪一种策略,不同的策略有不同的优缺点,所以需要根据服务商的实际情况和租户的具体需求来决定。
这里的话,我会比较偏向用第2种策略。
用户授权整体架构
根据上面的业务背景,整体的用户权限框架可以设计成这样:
超级管理员指Saas服务商运营管理人员,主要工作是Saas平台管理和租户运营,有的还要负责Saas环境搭建。权限资源包含数据权限、操作权限,有的时候还会按页面粒度来区分,但都是属于权限资源。
用户授权
考虑到任课老师只能看自己负责的学科数据、各班老师只能看自己负责班级的数据、教务主任只能看自己负责的年级。所以数据权限可以由【班级】来隔离限制,功能权限则由所分配角色来决定。
eg:假设张三是某校八年级教务主任兼教八年2班的化学老师,八年级总共3个班,则用户授权可以是这样的:
也可以是这样的:
这两种授权方式的区别在于第1种是按【授权班级+授权角色】完全隔离权限,即进入不同的班级对应不同的权限。
而第2种则是把【授权班级】、【授权角色】做权限并集,即在平台内对所授权班级对应的所有权限,都是一样的。
角色授权
而对应的角色则可以按需分配对应的权限,比如这样:
So看到这里你找到思路了吗?
如果还是没有,那就算了吧,毕竟我也不想做详细设计。
(不过关注私信留言,还是可以考虑单独进行详细讲解滴。我也想不到我竟然会这么没有原则)
--------------------------------------------------end---------------------------------------------