今天我们主要讨论的话题也是庆云上个阶段主要负责的一个产品能力——权限管理系统。
当然,权限管理系统有很多种,它们通常根据不同的需求、使用场景以及系统架构来设计和实现,常见的比如基于属性的访问控制,基于策略的访问控制,或者是基于多级安全的访问控制等等,那我们今天要聊的呢,是基于角色的访问控制,也就是RBAC, Role-Based Access Control,这是最常见的一种权限管理方式。用通俗的话来讲,就是系统中的每个用户都被分配一个或多个角色,每个角色对应一组权限。通过管理角色来间接管理用户的权限,从而简化了权限管理的复杂度。
举个例子,可以把它比作一个公司里的门禁系统:
角色:在公司里,有不同的职位,比如经理、员工、实习生等。每个职位对应一个“角色”。在 RBAC 中,角色就是用来定义一组权限的。
权限:每个角色有不同的权限,比如经理可以进入会议室、查看财务报表,而普通员工只能进入办公区,查看自己的工作任务。权限就是指在系统中可以做什么,比如读取数据、修改文件、删除记录等。
用户:公司里的每个员工都有一个身份。在 RBAC 中,用户就是系统中的个人,比如一个具体的员工。
角色分配:每个员工(用户)都有一个或多个角色,比如某个员工是经理,他就会被分配“经理”这个角色,这样他就拥有了经理的权限。在 RBAC 中,管理员根据用户的工作需要,为用户分配合适的角色。
通俗地说,RBAC 就是通过“职位”来管理每个人能做什么,管理员不需要为每个人单独设置权限,只需要根据他的“职位”来分配相应的权限。
金社长:为什么要给不同的人设置不同的权限?在设计权限管理功能时,是如何考虑用户需求的?
王庆云:权限分为按角色管理权限和按数据管理权限,角色控制相对颗粒度大一些,能满足大部分场景;按属性控制可以做更精细化的管理。我们两种模式都支持,覆盖了绝大部分需求。
金社长:对于不太懂技术的用户来说,这次权限配置系统最方便的地方是什么?
王庆云:权限和技术的关系没有那么大,和业务的关系比较大。只要你想清楚了业务需求,没有技术背景也能配出来。权限控制本身是一个繁琐且精细的工作,所以我们并不追求方便(也很难方便),更追求严谨和功能完整。
金社长:在系统中,我该如何简单快速地给不同的人分配权限?有没有特别方便的设置方法?
王庆云:目前只能在权限系统中一个个配,后续我们会增加两个功能,一个是数据库触发行为流,一个是在行为流中增加分配角色的节点。这样就可以做到自动分配角色,比如某个会员的积分到达一定分数后,自动分配会员角色。
金社长:如果我不小心配置错了权限,会有哪些后果?系统有没有什么办法帮助我避免这种情况?
王庆云:配置错了权限,会让用户做不该做的事情,或者本来能做的事情,不能做了。后果的严重程度看具体场景。这种情况系统无法帮你避免,只能自己配置的时候更严谨一些。
金社长:不同版本的权限管理系统有什么主要区别?我是小团队,适合选择哪个版本?
王庆云:区别只在于角色数量,免费版的只能拥有两个角色,这其实已经能覆盖到非常多的场景。高级版能增加一个额外角色,专业版能增加10个。至于适合哪个版本,还是要根据自己的业务场景来定。
金社长:如果我的项目要频繁调整权限配置,这个系统能不能快速处理这些变动?操作起来麻烦吗?
王庆云:调整完后,只要更新后端就可以。
金社长:有没有一些常见的配置误区,容易导致权限配置出错?我们该如何避免?
王庆云:权限是个繁琐且精细的东西,经常容易忘记它,尤其是后面新增的东西,比如数据模型,新建字段时,我们默认帮你打开了权限,需要自己去配置。
金社长:在小程序端,用户会默认登录,所以其实没有游客权限
王庆云:web端,默认是游客,很多人经常会忘记登录。大家要学会看权限的报错:“User 1 has no permisssion for ***”已经给了哪个用户在哪里没有权限,根据这些信息去找到错误。
金社长:未来这个权限管理系统会有哪些新功能?这些功能会更方便我们日常使用吗?
王庆云:后续我们会增加两个功能,一个是数据库触发行为流,一个是在行为流中增加分配角色的节点。这样就可以做到自动分配角色,比如某个会员的积分到达一定分数后,自动分配会员角色。