惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
Microsoft Azure Blog
Microsoft Azure Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog
Y
Y Combinator Blog
博客园_首页
有赞技术团队
有赞技术团队
博客园 - Franky
腾讯CDC
G
Google Developers Blog
Recent Announcements
Recent Announcements
博客园 - 【当耐特】
D
Docker
The GitHub Blog
The GitHub Blog
MyScale Blog
MyScale Blog
H
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
A
About on SuperTechFans
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
V
V2EX
U
Unit 42
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
B端产品|RBAC模型的实践和思考
举个栗子 · 2023-11-07 · via 人人都是产品经理

在B端产品设计中,权限控制体系设计是十分重要的一个环节,其中,不可避免地会提到RBAC模型。那么,什么是RBAC模型?RBAC模型有哪些优势所在?这篇文章里,作者做了梳理和总结,一起来看看吧。

B端产品设计离不开权限控制。本篇来介绍一下最常用的权限控制体系:RBAC模型。

一、权限控制五问

1. 什么是权限控制?

权限控制是指在系统中,对不同角色、部门或用户进行访问控制和权限管理的能力。它能够确保系统中的数据和功能仅对有权限的用户可见和可用。

2. 为什么做权限控制?

保障业务的安全性和稳定性。

  1. 避免员工看到职责外的敏感功能和数据;
  2. 避免员工操作职责外的敏感功能和数据。

3. 权限控制都包含哪些方面?

包含功能权限和数据权限。功能权限又包含菜单权限和按钮权限。

  • 菜单权限:指某一页面是否可见。
  • 按钮权限:指页面上某些按钮是否可见。
  • 数据权限:指页面上某些数据对用户是否可见。

case:公司有多个职能角色,商家运营负责和商家沟通一切事宜,商品运营负责对商品的覆盖度和质量,活动运营对活动进行管理。同时,商家在横向还存在多个部门,比如快消部门、3C部门等按照不同类目的部门。此时,不同类型的权限可能如下表所示。

4. 什么时候需要做权限控制?

当系统有多个职能的用户,且数据和操作敏感时,就会涉及权限控制。

5. 怎么做权限控制?

权限控制最常见的模型共4个:

1)DAC(Discretionary Access Control)自主访问控制:

系统会识别用户,然后根据被操作对象(Subject)的权限控制列表或者权限控制矩阵的信息来决定用户是否能对其进行哪些操作,例如读取或修改。而拥有对象权限的用户,又可以将该对象的权限分配给其他用户,所以称之为“自主(Discretionary)”控制。

这种设计最常见的应用就是文件系统的权限设计。

2)MAC(Mandatory Access Control)强制访问控制模型

在 MAC 的设计中,每一个对象都有一些权限标识,每个用户同样也会有一些权限标识,而用户能否对该对象进行操作取决于双方权限标识的关系,这个关系的判断通常是由系统硬性限制的。MAC 非常适合机密机构或者其他等级观念强烈的行业,但对于类似商业服务系统,则因为不够灵活而不能适用。

3)RBAC(Role-Based Access Control)基于角色的访问控制模型

最常用的系统权限控制就是RBAC模型,能覆盖绝大部分的场景。也是本篇详细介绍的模型和实际应用中的一些场景。

4)ABAC(Attribute-Based Access Control)基于属性的访问控制模型

在 ABAC 中,一个操作是否被允许是基于对象、资源、操作和环境信息共同动态计算决定的。可以细粒度地授权在何种情况下对某个资源具备某个特定的权限。比如时间、位置、设备、加密强度等在RBAC中不使用的一些属性信息。比如:早上九点前禁止 A 部门的人访问B系统。

但是ABAC使用过于复杂,一般场景就是RBAC模型,本篇也着重介绍RBAC模型。

二、RBAC模型介绍

1. 什么是RBAC模型(Role-Based Access Control)

引入角色的概念。通过用户对应角色,角色对应权限,来实现权限控制。

2. RBAC的应用

1)权限定义:给需要被控制的权限做一个定义,最基础的字段有:

  • 权限名称:名称;
  • 权限码:唯一的编码,一般用英文和符号。

而此权限定义,一般是产品提出需求需要控制,前端研发完成实际定义。

2)在权限系统完成配置

将此研发的定义,在权限系统中进行配置。一般公司都会有自己的权限系统,大家使用公共能力。配置页面最基础的有3个:

  1. 权限定义:将研发的权限名称和权限码在权限系统中完成定义。
  2. 角色定义:将角色和权限完成匹配;
  3. 用户权限赋予:将用户和角色完成匹配。

3)在用户访问系统时,调用权限系统提供接口,查询用户拥有的权限码合集。此时一般权限系统返回的都是权限码,而不是角色了。角色时便于配置使用的。

4)业务系统根据权限系统返回的权限码,匹配自己系统的配置,将对应的权限进行展示。

3. RBAC模型的优势和问题

优势:引入角色的概念,降低配置的复杂度。

如果没有角色,直接给每个用户配置权限。当存在100个用户,20个权限时。每个用户需要单独配置一次权限,会配置100次。而其中如果新增一个权限,还需要给100个用户单独配置。新增一个用户,也得单独配置好20个权限(如果需要筛选,还得每个权限衡量是否可添加)。

而引入了角色,可以将100个用户分成多个组,将权限也分成多个组。如果实际属于3个部门,那可以配置3个角色。配置3次角色和权限的关系,再配置100次人和角色的关系(此时可以考虑优化此处的效率)而其中如果新增一个权限,还指需要增加1次角色和权限的配置。新增一个用户,也只需要再3个角色中衡量是否可以添加。

优势也是问题:因为角色是自定义的,所以能灵活支持各种权限场景的权限控制。但是另一方面,可能带来的问题是角色太多,从而造成:

  1. 业务不清楚自己要申请什么角色;
  2. 业务申请超过自己工作职责外的角色。

怎么解决以上问题呢?实践中应用过几种手段:

1)引入岗位的概念

  1. 角色定义时,更多的倾向于岗位定义而不是功能定义。比如,角色名称我们可以叫商家运营,然后包含商家运营在各个业务系统内的权限,这样当我作为商家运营入职时,申请此角色即可。
  2. 创建角色和岗位的关系。把某些角色和岗位在权限系统建立关系,这样当用户作为此岗位登录时,自动可拥有此角色。

2)通过功能反向查询对应的角色:覆盖场景,用户需要某一单一功能但是不清楚对应的角色是什么。就可以通过岗位查询相关的角色从而进行申请。

3)权限分级:在权限创建时,确定权限的危险级别,对待高危权限,进行特殊的申请流程。

权限设计是每一个B端产品绕不过去的知识点,希望此文章能帮助初学者理解权限设计。是以记。

本文由 @举个栗子 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。