转转统一权限系统的设计与实现(设计篇)

去年底转转启动建设统一权限管理系统,到今天公司大部分业务系统都已经用上了。本系列将会分为三部分来分享下转转新权限系统的设计与实现。今天先分享第一部分设计篇,后续还将分享后端架构和前端架构部分,大家可以关注公众号 转转技术,不错过每一篇的更新。

老权限系统的问题与现状

转转公司在过去并没有一个统一的权限管理系统,权限管理由各业务自行研发或是使用其他业务的权限系统,权限管理的不统一带来了不少问题:

  1. 各业务重复造轮子,维护成本高
  2. 各系统只解决部分场景问题,方案不够通用,新项目选型时没有可靠的权限管理方案
  3. 缺乏统一的日志管理与审批流程,在授权信息追溯上十分困难

基于上述问题,去年底公司启动建设转转统一权限系统,目标是开发一套灵活、易用、安全的权限管理系统,供各业务使用。

业界权限系统的设计方式

目前业界主流的权限模型有两种,下面分别介绍下:

  • 基于角色的访问控制(RBAC)
  • 基于属性的访问控制(ABAC)

RBAC模型

基于角色的访问控制(Role-Based Access Control,简称 RBAC),指的是通过用户的角色(Role)授权其相关权限,实现了灵活的访问控制,相比直接授予用户权限,要更加简单、高效、可扩展。

用一个图来描述如下:

当使用 RBAC模型 时,通过分析用户的实际情况,基于共同的职责和需求,授予他们不同角色。这种 用户 -> 角色 -> 权限 间的关系,让我们可以不用再单独管理单个用户权限,用户从授予的角色里面获取所需的权限。

以一个简单的场景(Gitlab 的权限系统)为例,用户系统中有 Admin、Maintainer、Operator 三种角色,这三种角色分别具备不同的权限,比如只有 Admin 具备创建代码仓库、删除代码仓库的权限,其他的角色都不具备。我们授予某个用户 Admin 这个角色,他就具备了 创建代码仓库 和 删除代码仓库 这两个权限。

通过 RBAC模型 ,当存在多个用户拥有相同权限时,我们只需要创建好拥有该权限的角色,然后给不同的用户分配不同的角色,后续只需要修改角色的权限,就能自动修改角色内所有用户的权限。

ABAC模型

基于属性的访问控制(Attribute-Based Access Control,简称 ABAC)是一种比 RBAC模型 更加灵活的授

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值