权限管理之三权分立设计模型
编辑导读:权限管理是一个基础功能,如何满足多用户,多层级,多部门,甚至多租户的需求?本文作者对此进行了分析,与你分享。
权限管理如何才能满足多用户,多层级,多部门,甚至多租户的需求。对应SaaS平台的权限设计如何能满足不同用户的不同的需求。对应平台型产品如何结合业务场景设计灵活的权限管理系统。
我认为要遵循三个原则:
- 层级要够,预留拓展空间
- 权限分离,可实现排列组合
- 专业平台用行业术语,降低学习成本
接下来以机器学习平台权限设计举例,给大家介绍一下权限设计流程和框架。
一、机器学习平台权限管理设计
1. 名词解释
- 租户:指的是使用机器学习平台的一家企业或者机构
- 业务线:指使用机器学习平台的一家企业或者机构下面的业务线
- 平台管理员:指的是机器学习平台的管理员,可开通租户管理员账号
- 租户管理员:指租户管理人员,可开通该租户下的用户账号
2. 数据权限设计架构图
租户管理员可创建业务线,及业务线下的用户,每个用户可同时属于多个业务线,但只能属于1个租户。
3. 操作流程
1)创建租户
平台管理员登录,点击创建租户
2)创建租户管理员
平台管理员创建租户管理员
租户选中为下拉单选
3)创建业务线
租户管理员创建业务线
4)创建用户
租户管理员创建用户
业务线为下拉多选
5)创建角色
平台管理员和租户管理员都可创建角色
创建角色和赋予角色三个权限
- 页面权限
- 操作权限
- 数据权限
创建角色
分配菜单权限
分配功能权限
分配数据权限
数据权限分配为单选
- 租户数据:为该租户下所有数据权限
- 业务线数据:为该角色用户所属业务线数据权限
- 个人数据:只能查看个人数据
二、三权分立
通过以上案例可以看出,是把菜单权限、页面权限、数据权限赋予角色,把角色赋予用户,用户属于业务线,业务线归属于租户。
页面权限:
页面权限是指针对系统中具体的页面有访问的权限。例:整个系统中有三十个页面,A员工权限只能查看其中的十个页面。
操作权限:
操作权限是指系统中的功能按钮有具体的操作权限。例:A员工在查看到十个页面里,其中一个页面是模型管理页面,但是A不是运营人员,所以只能查询模型信息,而不能对模型进行新增、修改、删除等操作权限。
数据权限:
数据权限是指能够查看或下载的数据范围的权限,例:模型管理页面中包当前渠道下所有模型列表。不同角色在同一个页面看到的信息是不同的。渠道管理员可以看到所有模型。而工程师只能看到自己创建的模型。
三、总结
以上的权限设计模型是RBAC模型,基于角色的访问控制(Role-Based Access Control),再在角色授权上实施三权分立,使得权限管理更灵活。当然,针对不同的业务线权限设计也不尽相同,但是对应多用户的系统,还是倾向于“杀鸡用牛刀”,因为随着业务发展,再拓展权限的话成本会跟高,权限管理必须要有顶层设计,早比晚好。
#专栏作家#
老张,人人都是产品经理专栏作家。《人工智能产品经理技能图谱:AI技术与能力升级》作者,AI产品经理,专注于自然语言处理和图像识别领域。现智能保险创业公司合伙人,希望与人工智能领域创业者多多交流。
本文原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议
张老师你好,您的文章里面我有两个问题没看明白:1⃣️功能权限配置中不同的操作,是怎么配置上去的?2⃣️业务线和菜单有什么关联?
1,功能权限配置中不同的操作,是怎么配置上去的?答:增删改查等按钮都是程序写死的,每增加一个操作权限就需要程序员写一遍。
2,业务线和菜单有什么关联?答:业务线是租户下的分支,和菜单没有关联。菜单和角色有关联,角色和菜单有关联。业务线主要区分数据权限。
菜单权限和功能权限的区别没看出不同~~是多了“编辑”的选择吗??还是说是想表达字段权限??题目是三权分立·~为啥后面一带而过了~~很想看三权分立后,对应的三员是怎样的操作流程。shsky231,刚好也在学习这块,可以交流一下么~~
当给了菜单下的操作权限,但是没有给菜单权限怎么搞?会感觉矛盾吗?
不会呀,没有菜单权限就看不到相应的操作按钮,给与不给就没有关系了,因为用户根本点不到
一般而已,操作按钮是和菜单绑定在一起的,多对一
一般情况下,菜单权限的优先级高于操作权限的优先级,只要分配低优先级的功能必须先分配高优先级的功能,否则会出现有删除权限却找不到操作位置的尴尬情况(删除按钮在列表页面,却没有分配查看列表页面的权限)。
具体做法可以通过交互的方式解决,比如检测到勾选低优先级的功能就自动帮助勾选高优先级的,或者通过提示性的文字帮助用户组合勾选。
嗯嗯,可以通过这种方法来解决权限和页面不统一情况。
您好 那新建页面算是菜单权限吗 如果我分配了新建按钮的权限 我没有分配新建页面的权限呢 也同样依靠于高低优先级来自动勾选吗?
还是说和这个按钮相关的页面(无论是承载这个按钮操作的页面 还是按钮操作跳转的页面)均进行优先级的自动提示?
不错!有所指引
什么玩意